php中url重写,使用PHP重写URL
若吾皇
如果您只想更改路由,picture.php那么添加重写规则.htaccess将满足您的需求,但是,如果您希望在Wordpress中重写URL,那么PHP就是这样。这是一个简单的例子。文件夹结构但是也有一些需要在根文件夹中的两个文件,.htaccess并且index.php,这将是很好的放置的其余部分.php在不同的文件夹中的文件一样inc/。root/ inc/ .htaccess index.php的.htaccessRewriteEngine OnRewriteRule ^inc/.*$ index.phpRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php [QSA,L]该文件有四个指令:RewriteEngine - 启用重写引擎RewriteRule- 拒绝访问文件inc/夹中的所有文件,将对该文件夹的任何调用重定向到index.phpRewriteCond - 允许直接访问所有其他文件(如图像,CSS或脚本)RewriteRule - 重定向任何其他内容 index.php的index.php因为现在所有内容都被重定向到index.php,所以将确定url是否正确,所有参数是否存在以及参数类型是否正确。要测试网址,我们需要有一套规则,最好的工具是正则表达式。通过使用正则表达式,我们将一击就杀死两只苍蝇。要通过此测试的Url必须具有在允许的字符上测试的所有必需参数。以下是一些规则示例。$rules = array( 'picture' => "/picture/(?'text'[^/]+)/(?'id'\d+)", // '/picture/some-text/51' 'album' => "/album/(?'album'[\w\-]+)", // '/album/album-slug' 'category' => "/category/(?'category'[\w\-]+)", // '/category/category-slug' 'page' => "/page/(?'page'about|contact)", // '/page/about', '/page/contact' 'post' => "/(?'post'[\w\-]+)", // '/post-slug' 'home' => "/" // '/');接下来是准备请求uri。$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );$uri = urldecode( $uri );现在我们有了uri请求,最后一步是测试uri的正则表达式规则。foreach ( $rules as $action => $rule ) { if ( preg_match( '~^'.$rule.'$~i', $uri, $params ) ) { /* now you know the action and parameters so you can * include appropriate template file ( or proceed in some other way ) */ }}由于我们在正则表达式中使用命名子模式,因此填充$params数组几乎与PHP填充$_GET数组相同。但是,在使用动态URL时,$_GET将填充数组而不检查任何参数。 /图片/一些+文本/ 51 排列 ( [0] => / picture / some text / 51 [text] =>一些文字 [1] =>一些文字 [id] => 51 [2] => 51 ) picture.php?文本=一些文字+&ID = 51 排列 ( [text] =>一些文字 [id] => 51 )这几行代码和正则表达式的基本知识足以开始构建一个可靠的路由系统。完整的来源define( 'INCLUDE_DIR', dirname( __FILE__ ) . '/inc/' );$rules = array( 'picture' => "/picture/(?'text'[^/]+)/(?'id'\d+)", // '/picture/some-text/51' 'album' => "/album/(?'album'[\w\-]+)", // '/album/album-slug' 'category' => "/category/(?'category'[\w\-]+)", // '/category/category-slug' 'page' => "/page/(?'page'about|contact)", // '/page/about', '/page/contact' 'post' => "/(?'post'[\w\-]+)", // '/post-slug' 'home' => "/" // '/');$uri = rtrim( dirname($_SERVER["SCRIPT_NAME"]), '/' );$uri = '/' . trim( str_replace( $uri, '', $_SERVER['REQUEST_URI'] ), '/' );$uri = urldecode( $uri );foreach ( $rules as $action => $rule ) { if ( preg_match( '~^'.$rule.'$~i', $uri, $params ) ) { /* now you know the action and parameters so you can * include appropriate template file ( or proceed in some other way ) */ include( INCLUDE_DIR . $action . '.php' ); // exit to avoid the 404 message exit(); }}// nothing is found so handle the 404 errorinclude( INCLUDE_DIR . '404.php' );
php中url重写,使用PHP重写URL相关推荐
- (Nginx和PHP下)URL重写,TP实现URL重写
ngnix中添加网站重定向 由于域名没备案所以不能使用隐性url直接域名转接到另一个网站,所以迫于无奈只能在Vhost上动手脚了,原理是先访问另一个网站,然后由这个网站做转发. 方法很简单,找到ngi ...
- iis6 php url重写,IIS下 Yii Url重写,iisyiiurl重写_PHP教程
IIS下 Yii Url重写,iisyiiurl重写 Options +FollowSymLinks IndexIgnore */* RewriteEngine on # if a directory ...
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写(转)
在ASP.Net2.0中使用UrlRewritingNet实现链接重写 很多时候我们需要链接转向(Url Rewriting),例如二级域名转向.文章访问链接等场合. 让我们看两个例子: 1 你现在看 ...
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
在ASP.Net2.0中使用UrlRewritingNet实现链接重写 很多时候我们需要链接转向(Url Rewriting),例如二级域名转向.文章访问链接等场合. 让我们看两个例子: 1 你现在看 ...
- Android中WebView中拦截所有请求并替换URL(支持AJAX的post请求类型)
需求背景 接到这样一个需求,需要在 WebView 的所有网络请求中,在请求的url中,加上一个sign=xxxx 的标志位,同时添加手机本地的数据比如 sessionToken=sd54f5sd4f ...
- ajax中url如何使用,jQuery Ajax url使用方式
jQuery Ajax的使用场景: 页面需要通过后台逻辑,但只需要局部刷新以显示新的内容. jQuery Ajax url使用方式 1.servlet方式: 需要在struts.xml中写一个acti ...
- Java中方法重载和方法重写的区别
文章目录 1 Java中方法重载和方法重写的区别 1 Java中方法重载和方法重写的区别 主要区别如下: 方法重载: 在同一个类中 方法名相同 参数个数.顺序.类型不同 返回值类型.访问修饰符任意 方 ...
- JAVA中list.contains()方法,要重写equals(),hashcode()方法
今天动力节点java培训机构小编为大家介绍"JAVA中list.contains()方法,要重写equals(),hashcode()方法",希望能够帮助正在学习java的零基础学 ...
- url中传递对象参数_在URL参数中传递复杂对象
url中传递对象参数 假设您想传递原始数据类型,例如复杂的Java对象 java.util.Data,java.lang.List,泛型类,数组以及通过URL参数所需的所有内容,以便在页面加载后在任何 ...
- java中uri什么意思,java URI URL 个人理解。
java URI URL 个人理解. URI 是资源标识符.就是相当于一个人的家庭住址. URL和URI类似.是资源定位的. 和URI不同的就是URL提供了获取东西的方法. java.io.Input ...
最新文章
- NPAPI和PPAPI开发
- mysql受影响的行 0_为什么更新/删除成功时受影响的行返回0?
- 数据结构之顺序表(一)
- 京东探索研究院 34 篇论文入选 CVPR 2022
- 如何用vue实现模态框组件
- f77编程和c语言的区别,在fortran中l用F77编译器编译程序时出现问题?
- 玩家国度ROG 幻14 拆机 升级 换固态 换配件 教程
- PHP实现折半查询算法
- 西班牙夺得欧洲杯给IT业的十条启示
- binwalk和foremost的使用。
- oracle 删除索引报错ORA-01418:sepecified index does not exist
- JAVA proxy dns回源_常见问题 - CDN 回源配置相关问题
- BLE - 连接时触发配对
- 客服客户聊天系统源码分享
- hdu5594 ZYB's Prime
- 《MFC如何添加子对话框》
- JSTree的基本用法
- 估值指标二把手——市净率
- ssi 指令 php,SSI使用详解(二)_PHP教程
- github Action使用