mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。一些防盗链就是通过该方法做到的。
- RewriteEndine on
可以使用两种方式来写rewite,一种是直接在httpd.conf当中写。一种则是写在.htaccess中。
- 在httpd.conf当中找到“LoadModule rewrite_module modules/mod_rewrite.so”将#号去除即开启了apache rewrite。
- 开启.htaccess,依旧是在httpd.conf文件当中的AllowOverride all的“#”号去除即可。
可以在phpinfo界面当中查看rewrite开启信息,Loaded Modules处查看:mod_rewrite 如存在即已开启。
- 如果要直接在httpd.conf中输入的话,则输入在“</IfModule>”标签结尾处。
2.在htaccess书写。在windows当中是不允许建立这样的文件,那么我们要如何建立呢?先建立一个htaccess.txt可以进入cmd,键入:rename htaccess.txt .htaccess便可以生成一个.htaccess文件。简单的说就是建一个txt然后使用cmd重命名为htaccess即可。
新建立好一个.htaccess文件了以后,使用记事本打开。开始学习Rewrite规则。
开始第一个案例:
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭 RewriteRule ^(.*?).html 1.php?id=$1
Rewriterule是重写规则。后面的是正则。
1.php的代码:
<?php echo $_GET['id']; ?>
写好rewrite了以后重启apache。然后访问127.0.0.1/t_test.html
输出的效果如下所示:
成功的实现了伪静态。
这种仅仅只是以文件的方式写伪静态,我们还可以以文件夹的方式写
直接在刚才的基础上使用正则($)的作用来操作。代码如下:
RewriteEngine on RewriteRule ^t_(.*)/$ 1.php?id=$1
可以随便你怎么写就怎么写。
相关知识
mod_rewrite 规则修正符
- 1) R 强制外部重定向
- 2) F 禁用URL,返回403HTTP状态码。
- 3) G 强制URL为GONE,返回410HTTP状态码。
- 4) P 强制使用代理转发。
- 5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。
- 6) N 重新从第一条规则开始运行重写过程。
- 7) C 与下一条规则关联8) T=MIME-type(force MIME type) 强制MIME类型
- 9) NS 只用于不是内部子请求
- 10) NC 不区分大小写
- 11) QSA 追加请求字符串
- 12) NE 不在输出转义特殊字符 \%3d$1 等价于 =$1