apache关于rewrite方面的实验

来源:互联网 发布:linux目录命令 编辑:程序博客网 时间:2024/06/03 19:07

实验环境为apache2.2.22

win下

有一个文件 正常访问为player.php?id=1

现在想这样实现:

player/1.html

第一种方法

直接修改httpd.conf文件

LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine on
RewriteRule ^/player/(.*).html$ /player.php?id=$1

这样子就可以直接实现

但是目前看来

RewriteRule player/(.*).html$ /player.php?id=$1 这样也可以

第二种方法,先要让apache 支持.htaccess文件

修改httpd.conf

用文本编辑器打开后查找
<Directory /> 
Options FollowSymLinks
AllowOverride None
</Directory> 
改为
<Directory /> 
Options FollowSymLinks
AllowOverride All
</Directory>
就可以了

然后,建立.htaccess文件

一种是创建一个htaccess文件,然后进入cmd 执行命令 rename htaccess .htaccess

或者直接用编辑器 如notepad++ notepad在保存时直接保存为 .htaccess 即可 扩展名一定要为*.*才可以

RewriteEngine on
RewriteRule !\.{js|ico|gif|jpg|png|css}$ index.php
RewriteRule /player-(.*).html$ player.php?id=$1

第二行意思是不对静态文件进行专项判断

下面提供一些参考:

1.Apache Rewrite规则的书写
RewriteEngine on
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]

RewriteEngine on
#当我们访问的地址不是以www.163.com开头的,那么执行下一条规则
RewriteCond %{HTTP_HOST} !^www.163.com [NC]
RewriteRule ^/(.*) http://www.163.com/ [L]

2.Apache 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

 

0 0
原创粉丝点击