URL Rewrite Rule重写规则

这篇博客介绍了Apache的URL重写规则RewriteRule,包括PHP URL重写、伪静态实现和RewriteRule的语法详解。通过实例展示了如何利用RewriteRule进行URL美化和SEO优化,以及如何设置重定向和代理。文章适合初学者参考,帮助理解URL重写机制。
摘要由CSDN通过智能技术生成

php URL rewrite路径重写一例

一、文件 test.php
 复制代码 代码示例:

<?php
$id=$_GET["id"];
echo $id;
?>
首先 apache文件里
打开Apache配置文件httpd.conf,找到如下:#LoadModule rewrite_module modules/mod_rewrite.so
开启rewrite,去点前面"#"

二、重载Allowoverride
查找apache配置文件找到如下:
复制代码 代码示例:
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory>
将AllowOverride None 改为 AllowOverride All
在htaccess中暂时了解到三种url重定义
复制代码 代码示例:
<IFMODULE mod_rewrite.c>
RewriteEngine On
#RewriteBase /  (若文件在根目录下不必定义)
#RewriteRule ^t_(.*).html$ test.php?id=$1 [NC](打开test.php以t_id.html  比如 t_2.html  页面输出 id=2)
RewriteRule ^([0-9]+)$ test.php?id=$1 [NC](直接输入id  比如 localhost/test/2  页面输出 id=2)
RewriteRule ^index.html$ index.php [NC](直接输入index.html可打开index.php这个页面)
</IFMODULE>

php 伪静态(url重写)的写法

PHP 伪静态,也称作php URL重写,无论是出于seo优化的考虑,还是想让url更美观,都是现在非常流行的方法,建议大家学习参考下。
来看下面这个网页 url:
http://www.jbxue.com/test.php/1,100,8630.html
其实处理的脚本是test.php 参数为1,100,8630
相当于test.php?a=1&b=1=100&c=8630 只不过这样的URL太难记。搜索引擎也不喜欢。
真静态只是完全生成了HTML。
客户端访问的时候直接输出。不用脚本解释。可以节省不少带宽哦。
当网站浏览不是很大时,可以考虑url重写,即不生成真正的静态页面。
为大家提供一个简单的url重写的php代码,方便初学的朋友参考。
有兴趣的朋友,还可以研究下这篇文章:php实现简单的伪静态URL的机制介绍

<?php
// url http://www.jbxue.com/test.php/1,100,8630.html
//利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分
if(@$path_info =$_SERVER["PATH_INFO"]){
//正则匹配一下参数
if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){
$gid =intval($arr_path[1]); //取得值 1
$sid =intval($arr_path[2]); //取得值100
$softid =intval($arr_path[3]); //取得值8630
}else die("Path:Error!");
//相当于test.php?gid=1&sid=100&softid=8630
}else die('Path:Nothing!');
?>

php实现简单的伪静态URL的机制介绍

php框架路由伪静态
曾几何时,我们公司准备开发一套新的建站系统,决定将以前的框架给KO掉,重新开发一套新的框架来适应新的系统功能。领导们不希望使用外面已有的框架,号称要开发有自己特色的框架(不懂开发的领导害死人)。于是我们又投入到了新的开发当中。
由于我们的系统支持伪静态,以前的系统是直接使用服务器apache或IIS自带的rewrite文件定义规则,而框架中没有任何路由机制,于是这次框架准备使用新的策略,由PHP实现路由机制。于是我开始了功能实现的探索之路。
开发之前,我先了解‘路由机制’要做什么,它主要做两件事。
1.路由机制就是把某一个特定形式的URL结构中提炼出来系统对应的参数。举个例子,如:http://main.wopop.com/article/1  其中:/article/1  -> ?_m=article&id=1。
2.其次,是将拥有对应参数的URL转换成特定形式的URL结构,是上面的过程的逆向过程。由于路由机制隔离了URL结构和参数的转换关系,使的日后结构的变化不会影响下面代码的执行。
通过上面的了解,可以得出要编写一个路由机制要一下几步:
1.编写服务器apache或IIS自带的rewrite文件,将URL结构导入index.php。
2.一个路由规则配置文件。
3.一个路由解析器,用来解析规则,匹配和转换URL。
于是,我们一一实现其中的每一个部分。
1.rewrite文件编写,以Apache为例:
复制代码 代码如下:

<IfModule mod_rewrite.c>  
RewriteEngine On  
RewriteRule ^index\.php$ - [L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule (.+) index.php/$1 [L]  
</IfModule>
 
上面的代码就是将URL结构导入index.php中,具体的rewrite细节就不赘述了。

2.在PHP中设置一个路由规则配置文件routes.php,我简单的使用了一个hash数组编写规则:

复制代码 代码如下:
    /** 
     *路由配置文件编写说明: 
     * 路由配置在一个array数组中,一条记录代表一个规则 
     * 其中数组key的数据代表匹配的路径格式:使用特定的字符串标识  如&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值