|
|
环境:系统 Windows+Apache 2.2
h" m4 W H- _# }7 S1 W, z7 {' \! K2 H
加载Rewrite模块:; m$ C/ p8 {; H
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
3 e7 ?' j" w, j/ r" [% Q% m. m+ V4 l: {5 o8 L7 Z
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
2 T" ]5 Z' c0 @( m' M( p! D! T
& O: I4 i) E$ |: u# AllowOverride controls what directives may be placed in .htaccess files./ E- n, b. P" Z; p
# It can be “All”, “None”, or any combination of the keywords:
$ n, R0 b/ t3 n4 v* }6 d( g# Options FileInfo AuthConfig Limit
/ _7 H6 w; i& N/ E#
$ J$ o+ R0 @5 IAllowOverride All- W" h) V" i$ s
6 b' [% U3 {, ~- }0 f1 g! G, M在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。/ @" g, k, y. y( g3 E8 F
9 Y' r& e) d% Z) k D& z' I$ o
Apache Rewrite模块的简单应用:& v( p$ i" ~ c5 ]
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。. Z5 D$ |" c5 d" ?/ x# M
5 T! G( R# r7 g: m Y. a+ P
1、请求跳转1 q1 P: s, T( F1 U5 A6 K( k P
目的是如果请求为.jsp文件,则跳转至其它域名访问。
9 ^+ s4 n6 s2 K2 W) v$ _, j7 |例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
( c( |$ I4 e+ r; ?! I8 q& J& m) S注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
9 \- r- \8 l) A, O+ {修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
4 p4 p( G' R: N e8 {+ @- RewriteEngine on- ~# p7 h) Y. C
- #开启Rewrite模块
8 i: A# }4 T7 B' r - RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写0 i O8 f/ [$ M/ Z' {( \
2、域名跳转
0 N/ K& h& K- J. I1 k4 F; I) n如果请求为old.xp6.org下的所有URL,跳转至b./ S+ U7 c" C+ v; Z
- RewriteEngine on
5 X: d1 h! J3 J& r1 x# ~ - #开启Rewrite模块
: f3 r1 T$ l- c0 ^* v - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]8 L i8 c& A' X/ f9 I1 s6 D. F8 G
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符: o8 \, N! q9 z1 H9 \
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链4 w; |, w9 m. G- ~; N: c
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
5 }, d$ E4 h9 J$ [+ x# {& l* C- RewriteEngine on a/ k9 f* A/ F) V
- #开启Rewrite模块0 f; M. z& n$ m
- RewriteCond %{HTTP_REFERER} !^$
8 a# H; {; Q5 D7 P) H$ i% k) } - #如果不是直接输入图片地址$ Z7 u* o9 D4 ]+ P( `
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]7 g3 [8 Z; h, H4 K E& u
- #且如果不是img.xp6.org所有子域名调用的
) K5 ^7 `+ c( M8 _. f - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
: P6 X* u H# O$ o - RewriteCond %{HTTP_REFERER} !qq.com [NC]
1 R$ p5 B" g0 Q. D - RewriteCond %{HTTP_REFERER} !google.com [NC]$ t c q" ~- ?* @% t7 v( S
- RewriteCond %{HTTP_REFERER} !google.cn [NC]
! J9 G- ~5 D2 W/ [! p! X - RewriteCond %{HTTP_REFERER} !baidu.com [NC]
9 o v" C1 f6 Z5 J J; K+ I - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
: P6 w/ U! P ^* E# Z L" } - 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文件
1 c* g4 q% N, K( D8 j在Apache2\conf\httpd.conf 最后一行添加4 w# L9 {; O7 A+ g7 Y8 k- H( @" u! W
- RewriteEngine On
! n/ z/ V! w% S# s - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪 R5 _, R6 T) q
& h4 x3 [0 P5 w& z7 v1 d+ I5 ]Linux+Apache环境配置类似。: E+ h0 X( N: e7 O* {& A
' z. [1 s9 K: U4 q [
|
|