|
环境:系统 Windows+Apache 2.2
. v5 y0 `, v7 [: U8 U# ^5 p# U2 u4 d W" M& W! X
加载Rewrite模块:; r! f2 H$ R/ v( p6 e0 ]
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。0 B" x' B$ P7 u( H* }$ S: }% ?0 M
7 c4 I# \4 Q! |, g2 V允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
6 K6 y: t' ^% D0 d% G
4 X# m* B" U0 P+ d- ?- S8 v% s4 e, t# AllowOverride controls what directives may be placed in .htaccess files.6 _% q" m, O# r9 G. w9 V0 g& D
# It can be “All”, “None”, or any combination of the keywords:
9 R6 W9 v6 `( o# N+ |# Options FileInfo AuthConfig Limit/ ?. ^# v z. W# @* d+ x$ K
#- ` k) y3 U. M
AllowOverride All
, c- U4 v, p( h/ _8 f# P8 d- m* m5 a' z- x, _' J
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
8 r9 ~! _6 j2 X
- d, W0 p8 ?. b6 k% vApache Rewrite模块的简单应用:/ I% Y3 c, h7 {% l- x- \0 C
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
' A1 |+ Q% l; h) ^9 k* c2 u
5 X U' G. v6 D% i% ~& C* Y1、请求跳转$ i' p! w0 i( A+ F' M8 R
目的是如果请求为.jsp文件,则跳转至其它域名访问。 P. k* X$ G1 s5 I
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页# i- A- s( u G0 c) @$ s
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。- U* ]- F, i9 v; q( _! I i
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容, _$ G8 e0 S7 k( V9 p
- RewriteEngine on
: {) L. f% B) a6 r - #开启Rewrite模块
* w; n/ A" ^4 l y7 Y - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写; Q/ i- C( l2 c$ F; h% |
2、域名跳转! p: N) e( v x
如果请求为old.xp6.org下的所有URL,跳转至b.4 i& ]9 I9 u/ q' i4 R1 {
- RewriteEngine on$ X) x0 m. M6 A( W
- #开启Rewrite模块2 |& @8 [& U3 U! Y3 ~5 M9 H5 Z
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]2 v' Z# Z7 }- \
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
, I) U* v- i( c) Z$ o0 d - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
7 ~6 T3 P! k4 b: F如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容3 \$ Z" f5 K8 P( |% b& s
- RewriteEngine on
( ?; M" {6 v4 W - #开启Rewrite模块
& Y* Z5 u0 @0 h' @3 A7 L - RewriteCond %{HTTP_REFERER} !^$
( r4 P! d3 s0 i$ e/ p( ]1 k - #如果不是直接输入图片地址
; I. E* e/ g& l5 |% Y( m% @& f - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]3 p7 `7 f7 p: J6 [" x& v
- #且如果不是img.xp6.org所有子域名调用的5 C( t! p: v- [, `
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
B4 r$ N/ W9 F9 D2 f3 e( _ - RewriteCond %{HTTP_REFERER} !qq.com [NC]. i- A: B: p; ~+ O6 t8 c
- RewriteCond %{HTTP_REFERER} !google.com [NC]; E/ {. L B3 q& N$ I9 U/ p
- RewriteCond %{HTTP_REFERER} !google.cn [NC]
4 U |: x0 Q1 s. c" k! q - RewriteCond %{HTTP_REFERER} !baidu.com [NC]
8 n( t1 s8 U% y0 C$ C - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
8 i4 ?+ F: L( D+ i7 S - RewriteRule (.*)\.(jpg|jpeg|jpe|gif|bmp|png|wma|mp3|wav|avi|mp4|flv|swf)$ http://xp6.org/err.jpg [R=301,L,NC]
复制代码 4、不需要定义.htaccess文件
, v& m# K; o4 u- [在Apache2\conf\httpd.conf 最后一行添加
7 u! i( H/ l0 O2 J3 F. x- RewriteEngine On( }9 t D) F3 J3 C) a/ w
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
2 _3 B, o& i$ Q2 V! R; ^
. r F! Q/ p$ g- t/ X: FLinux+Apache环境配置类似。
- G2 r7 t6 `2 C1 e: i7 o7 N3 R$ \0 P; l
|
|