|
|
环境:系统 Windows+Apache 2.2% X( q v5 |+ p" x7 i: C
, d: p2 @( n5 t$ Z) J
加载Rewrite模块:
& c6 ?' p3 `. u; f在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
( F8 C) c7 Q" g$ x: k' Y
; n0 Y* Z* d( v8 R# I允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
: T# s" Y2 J8 r; X- \8 I. R
3 G4 n7 I7 R; g* p+ z" B# AllowOverride controls what directives may be placed in .htaccess files.
' G3 i& T& i9 Z2 L' }8 O# It can be “All”, “None”, or any combination of the keywords:/ ]! j) v# R9 w8 L7 k+ X
# Options FileInfo AuthConfig Limit: b. f# P4 S+ M$ o" u# m/ U0 b. K% o
#" b# a, a( P% a) T1 g
AllowOverride All
5 R s$ @! C% s
A' W" ^$ l; ^$ }$ m# o$ G在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
/ D+ F3 L0 } C4 Z
3 y# U6 |' H+ G8 B2 M9 ^: yApache Rewrite模块的简单应用:
$ N6 C4 N5 Q: u4 v( s0 eRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。% C4 J4 F* u5 `- a/ f" o) `$ x
2 _: W2 |: K1 h( b3 c t8 u
1、请求跳转
+ S0 D; l% A( U" k3 Z目的是如果请求为.jsp文件,则跳转至其它域名访问。
H. u: l- D6 x, y4 I8 F+ }$ u例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页1 O* F e. P. n" f
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
9 U9 ]6 x. _% u# f: c5 O* Q( _修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
' w+ k* S% V Z/ |" W- RewriteEngine on
1 U. o4 c0 [# w - #开启Rewrite模块 Y) m2 z' ~- f# i- p
- 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 R7 a: l: @; J; N& v2 M9 I& q. G2、域名跳转; c: c& J! }9 P# K" B D" v
如果请求为old.xp6.org下的所有URL,跳转至b.$ X/ G0 l6 D; s2 c1 ^0 J# j% m+ X8 Z
- RewriteEngine on
" H& ?' V8 t" o- i% _ - #开启Rewrite模块4 }" Y( w9 H# r; f) e
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]8 ] d5 W& p2 `1 W3 Q
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
2 g) [( u! h1 X' q, j) W) H - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
* D9 n) R3 X$ {/ n: R如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容; y; A9 L0 n; i7 k
- RewriteEngine on0 D6 u$ a3 c* j, B2 v. E* `& z
- #开启Rewrite模块9 C8 Z1 @( p% T7 S J! {( i
- RewriteCond %{HTTP_REFERER} !^$
% C. M4 R; ]' q1 h8 r% H* J5 X/ R - #如果不是直接输入图片地址1 W; D1 J7 c0 ~% G) J. B
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]% Q$ A m2 E: Z$ |& l# w) ^+ w
- #且如果不是img.xp6.org所有子域名调用的, y4 z* v! L; c0 n, y2 M I
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]8 E/ t5 e% V% r9 L1 ]) h
- RewriteCond %{HTTP_REFERER} !qq.com [NC]' @* a/ ~( C+ y( P+ ]$ t: ^" H0 g
- RewriteCond %{HTTP_REFERER} !google.com [NC]! X- Z3 ]6 `% ~4 h( m
- RewriteCond %{HTTP_REFERER} !google.cn [NC]6 ?7 t- S D# c, H6 `0 D
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]
" s7 L# L# y. D- `* s - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
' p7 p& A2 a$ D1 \& Q- u - 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文件8 p* b8 `- y5 m# q
在Apache2\conf\httpd.conf 最后一行添加$ s7 k3 I0 ?' E3 V
- RewriteEngine On3 g- v H: t# y5 v
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
. t6 f/ j- o" S/ j: u
" V$ M# [ K( w% X+ o: SLinux+Apache环境配置类似。
+ B# T' W" Z( h6 e9 m/ T$ T$ r7 v: |
7 m5 o& c/ t) F3 \- z9 i8 i |
|