1.window 加载model模块
D:\xampp\apache\conf 下的httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so 开启即可
重启apache
2.linux 加载model模块
cd /etc/apache2
ls
vim apache2.conf(里面都是加载得模块)
cd mods-enabled/
ls
cat env.load(查看已加载的模块,若没有可去mods-available加载)
cd mods-available/
ls
ls | grep rewrite.load
cat rewrite.load
cp rewirte.load ../mods-enabled
cd ../../
/etc/init.d/apache2 restart
ps -ef | grep apache
3.重定向
修改APACHE的配置 修改目录权限AllowOverrideAll
生成.htaccess
RewriteEngine on ...
cd /etc/apache2
vim apache2.conf(/var/www/ AllowOverride All)
/etc/init.d/apache2 restart
4.编写.htaccess文件 放于运行web目录
window下:
echo 1>.htaccess
RewriteEngine on
RewriteRule ^(.*)\.htm$ $1.html 将.htm文件全部变为.html
linux下:
/var/www
vim .htaccess
RewriteEngine on
RewriteRule ^(.*)\.htm$ $1.html
index.html
zjx
6.在httpd.conf中配置重定向
AllowOverride None
RewriteEngine on
RewriteRule ^(.*)\.htm$ $1.html services.msc 重启win下的服务
7。RewirteRule语法说明
格式:RewirteRule 模式匹配 替换的URL 【flags】
模式匹配支持Perl格式的正则表达式和rewrite的变量
多个flag用逗号隔开【R=302,C=】
8.loglevel
设置LogLevel alert rewrite:trace8(1~8)
生产模式不要大于trace2
查看apache_error.log日志文件(错误日志)
只能在httpd.conf文件中设置,不能在.htaccess中设置
9.RewirteRule R flag 强制外部重定向,后面可以加301或302跳转,不加默认302
RewirteRule ^/?(.*).html1.php [R=302]
区别与内部重定向,浏览器上的地址会改变
10.```
RewirteRule ^/?(.*).html /src/1.php
【C】与下一条规则成为一个整体,如果这一条不匹配,下一条就不进入了
11.RewirteRule L flag 结尾规则,立即停止重写操作,并不再应用其他重写规则
RewirteRule ^(.*) first.php?req=$1 [L]
RewirteRule ^(.*) second.php?req= $1
12.RewirteRule NE flag
不对URL中的特殊字符进行hexcode转码
RewirteRule ^(.*)\.htm /index.html#$1 [R,NE]
13.RewirteRule NC flag
不区分大小写
RewirteRule ^test/(.*) /src/$1 [R,NC]
14.RewirteRule G flag
请求的网页已经失效了(GONE)
RewirteRule ^test/(.*) /src/$1 [G]
Apache服务器会返回410
15.RewirteRule QSA flag
用于在URI中截取查询字符串
RewirteRule ^test/(.*)$ /per.php?name=haha&a=$1 [QSA,R]
16.RewirteBase URL-path
设置了目录级重写的基准URL
RewirteBase /test/
RewirteRule ^test/(.*) $1.html ----内部重定向
RewirteRule ^test/(.*) $1.html [R] ----外部重定向 (自动在/test目录下,不设置BASE,则默认目录)
17.RewirteCond 指令定义了一个规则的条件
格式:RewirteCond TestString CondPattern
TestString 使用 $1-9
RewirteCond $1 "test"
RewirteRule ^(.*)\.htm $1.html 匹配后为test.html ()括号内的值必须匹配为test
18.RewirteCond 服务器变量
TestString 使用说明 %{NAME_OF_VARIABLE}
RewirteCond %{HTTP_HOST} "127.0.0.1"
18.RewirteCond cond变量
TestString 使用说明 %1-9
%1-9 RewirteCond条件中最后符合的条件中的分组成分
RewirteCond %{HTTP_HOST} "127.0.0.(.*)"
RewirteCond %1 "1"
19.CondPattern使用
-d 是否是目录 -f 是否是文件
-F 文件存在并且可以访问
[NC] 大小写不敏感
[OR] 条件判断的或,如果不加默认是and
20.取值()
括起来的表达式按次序,后面的匹配后的处理中可以用$1~$N来访问
21.301 永久重定向 302 临时重定向
22.文件访问控制----防盗链
RewriteEngine on
RewirteCond %{HTTP_REFERER} !^ - [F,NC] 以gif|jpg|png结尾的图片
23.限制访问者的IP列表
限制IP
在httpd.conf中配置RewriteMap
RewriteMap hosts-deny txt:D:/wamp/hosts.deny
在相应的位置建立hosts.deny文件
写入:192.168.2.68 deny
配置.htaccess
RewriteEngine on
RewirteCond {hosts-deny:%{REMOTE_HOST} | NOTFOUND} deny
RewirteRule ^ - [F]
重启apache
24.限制迅雷
通过特征限制迅雷访问
RewriteEngine on
RewirteCond %{HTTP_USER_AGENT} 2.0.50727 [NC,OR]
RewirteCond %{HTTP_USER_AGENT} ^ BlackWido [NC]
RewirteRule . abuse.txt (重定向到文件)
25.Nginx伪静态配置
防盗链示例
location ~ *.(gif|jpg|png|swf|flv)invalid_referer){
rewrite ^/ www.nginx.cn
#return 404;
}
}
26.thinkphp重定向配置示例
配置方法(将根目录下的.htaccess文件 指向到thinkphp里的public目录下的index.php下)
RewriteEngine on
RewirteCond %{REQUEST_FILENAME} !-d 访问的不是目录
RewirteCond %{REQUEST_FILENAME} !-f 访问的不是文件
RewirteRule ^(.*)$ /think/public/index.php/$1 [QSA,PT,L] 映射到入口文件index,php