|
|
环境:系统 Windows+Apache 2.2& T9 R z* N0 W; O+ l; p9 ]
- m' }# h9 S& E+ _& ?( E
加载Rewrite模块:
' F, p }8 S7 a6 x* ~在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。; I9 T0 o; ]& b" B* l: Z4 z7 R* {
2 }# Z) g- y5 }" w0 y允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):6 k& L, g, S2 ?0 }7 h+ T
& n; v+ h& T J$ m" c# AllowOverride controls what directives may be placed in .htaccess files.! g8 ~! {. t5 g6 f" J" N/ i
# It can be “All”, “None”, or any combination of the keywords:
9 j2 f' F! \& r; D' N6 t# Options FileInfo AuthConfig Limit
, G+ A. m/ T( p# m0 D5 l#, Z$ z% T) i/ y
AllowOverride All
" X9 q/ y" @1 E- o# [) Q9 l( q* U! Y1 C
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。, L6 D# e q+ B7 _/ U) L
$ I) h# n* f) R! n/ OApache Rewrite模块的简单应用:
' N0 Z* ^" `6 H9 L N9 x) ^/ _5 e5 ~Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。3 b) ^6 p5 U& C- `& l' _/ `9 J
2 [" J! p/ \8 w q! V: p& s9 i1、请求跳转
& M* R6 O7 w6 G3 ?目的是如果请求为.jsp文件,则跳转至其它域名访问。
6 u* V; b+ M) l. Q, W% n3 d" c例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页) U& {) |. `4 R/ Q! }* k: r
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
! ]5 K4 g8 B$ v. ^& Q: o" B修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容: [3 @+ i' R9 W- N* U$ Q- _
- RewriteEngine on
9 i0 y7 O8 z0 g2 K1 A5 B# x - #开启Rewrite模块
* U( i# I) E c+ `. s - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写7 {6 g9 k2 V6 ? l, Z/ R
2、域名跳转& o& a6 s" y- Q
如果请求为old.xp6.org下的所有URL,跳转至b.& x% _4 D, V8 t- P9 e- n, B
- RewriteEngine on
! K- S: _+ v& W( G- n4 b - #开启Rewrite模块
2 {5 O: n+ U9 ?8 _. V4 e - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
: S- y5 e6 B& S) D+ Y" D( e) Y3 I - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符$ B+ {4 i2 c$ n: E* F
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链! W- e' C, A" K( c# y$ r
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容7 f, D! Q6 b) [, S: j7 r
- RewriteEngine on
, y' O. V4 p! [# F2 _ - #开启Rewrite模块
9 U9 x- p+ P4 g2 J) n; m- B* N7 M% E [ - RewriteCond %{HTTP_REFERER} !^$( [( a7 L+ r# g
- #如果不是直接输入图片地址) {# j- E+ O# [+ \$ k1 E
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
w" z ~9 `+ x' L% a1 G9 J - #且如果不是img.xp6.org所有子域名调用的 G+ m" ^" M8 _, `
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
: N% v1 U: S& { u* W* W5 o - RewriteCond %{HTTP_REFERER} !qq.com [NC]+ F4 P1 Z' ^3 [
- RewriteCond %{HTTP_REFERER} !google.com [NC]
' a% Z, n% F* w+ M( Q' a- [1 Y8 N3 h+ X, Y - RewriteCond %{HTTP_REFERER} !google.cn [NC]* \1 l1 Q* v1 e2 J4 C' a
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]6 A& k$ W( s. b. N% w9 M
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
) ~6 `. V. r# ]" K! c- k - 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文件# Y# i8 {% t# H8 b/ n' L
在Apache2\conf\httpd.conf 最后一行添加7 d0 [+ f6 y2 T
- RewriteEngine On! q; _/ n B* H P# ^& f2 P
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪3 I4 m4 P$ c( E N
; @1 K3 M6 K. pLinux+Apache环境配置类似。1 ^& L; G0 z8 p, F
6 B% e! a, C8 a, K- l; o |
|