|
|
环境:系统 Windows+Apache 2.2' k0 @, s( G( K2 W* R, ^% t
" H9 r, \* g$ h" D Q% ~
加载Rewrite模块:1 H. m& q- J# i; a8 ^3 ?! p
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
. H: _8 b+ t, z1 V2 p; M7 @
( q& D; a& t- {允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
6 a) a* Y) j- t& K8 r
! z) d8 E3 \9 J4 T5 O( I* F- x' n# AllowOverride controls what directives may be placed in .htaccess files.& u& J$ ~3 e3 A5 w# H3 K s
# It can be “All”, “None”, or any combination of the keywords:: h2 K, o: _3 ?4 A) x! t4 b3 p6 F; r p0 X
# Options FileInfo AuthConfig Limit- d( G- |/ c: }- N8 W
#, P. A$ d0 B2 Q t
AllowOverride All
. v9 B9 R& q, v: T' G, G$ f3 c6 T& \3 U9 \/ ?( Y
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
b% I1 u7 `. d+ N0 s- ]2 j$ M
; O; b4 G4 H8 M5 m' V3 `& n) ~, Q( |Apache Rewrite模块的简单应用:
' G5 Z1 C8 P# n0 J0 {& kRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
8 ~6 _. U. v$ y' o* }5 }' j& Y2 f6 h$ H9 W8 t1 N- t) R* p e! h# v
1、请求跳转6 Q |3 ?( U6 P& I, i2 _
目的是如果请求为.jsp文件,则跳转至其它域名访问。/ |2 u" \, A3 J
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
) e9 o% c" o( v# p- `7 ^注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。0 `* ^$ h5 S1 C0 v
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
1 s" }# m" v& a* d6 a- RewriteEngine on. n2 C8 ?$ _4 J; B0 Y
- #开启Rewrite模块
( h1 I6 ]7 P1 u$ M7 h6 f7 e - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写6 z% g- }3 D# u: a x7 \! v
2、域名跳转
1 C1 `# \1 f# Z* ?- \$ Q如果请求为old.xp6.org下的所有URL,跳转至b.
( K6 Q$ f m" {* t& Y+ R- RewriteEngine on( P/ d* Z! v2 X1 I
- #开启Rewrite模块
3 w0 t; t @% |1 X% E - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
* O/ U j/ l) k4 m7 l5 } - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
: g4 I4 u( B( k g$ e - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
" v; G. N4 e9 c/ r2 ?3 P: c# G如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容' s) N: X# m+ L. K- o
- RewriteEngine on
9 j7 z5 P) l0 k0 m* G6 _8 Y - #开启Rewrite模块5 t! i, z, k5 J. L1 J2 r# U
- RewriteCond %{HTTP_REFERER} !^$
3 q& J# e g( r, P3 w9 F - #如果不是直接输入图片地址# h4 C9 A/ Y/ K' e4 M( ^6 R, D
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]2 i5 O1 h. O. [
- #且如果不是img.xp6.org所有子域名调用的
6 K5 [& }9 B/ d V2 ?; W - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]0 @: M7 l, y) C
- RewriteCond %{HTTP_REFERER} !qq.com [NC] ]) B: Q2 F+ a
- RewriteCond %{HTTP_REFERER} !google.com [NC]
0 _0 B6 A5 h$ Y1 R4 I - RewriteCond %{HTTP_REFERER} !google.cn [NC]; R; a$ ^& U2 `) g4 F
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]7 j9 [ X! |: N! _ c- m2 \% t
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]) X& V- }% z$ r
- 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文件
0 J1 O. b7 H8 o在Apache2\conf\httpd.conf 最后一行添加9 a" ?3 q+ x, w* n2 l3 q
- RewriteEngine On
# ~1 V- L! p4 [. ?9 f% o - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪4 D& J$ Z& X' C
3 d9 W! s# Z6 u# j$ a1 u" {
Linux+Apache环境配置类似。/ n% z% S; [- w( `0 h+ f, m+ ~' x* p
3 [" s/ d$ O* E/ M
|
|