终于配好了apache的rewrite模块

困扰了好就的问题,一直都没解决掉,自我感觉这个不太难啊,但就是一动手来,就傻眼,他就是不按照你的要求来工作.
今天在PHP100上看到一个视频教程,就下下来学习了一下,跟着教程做了个简单的拟静态.

RewriteEngine on
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]

起初,我是写在.htaccess文件里的,但是发现不其作用,不知道是为什么,后来就把这段代码搬到了httpd.conf文件中了,很爽!终于成功了一次,可以达到预期的效果了.

不过我也发现了 [R]  加与不加的区别,
加上 [R] ,其跳转后是真实的地址,
不加的话,看到的地址还是拟静态的地址.

附上相关说明:

1、mod_rewrite 简介和配置
Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等

2、mod_rewrite 规则的使用

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.php100.com [NC]
RewriteRule ^/(.*) http://www.php100.com/ [L]
——–
RewriteEngine on
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]

3、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

发表评论

返回顶部