|
环境:系统 Windows+Apache 2.2! L& o% i" J. }+ e
" O+ L" L8 j; g. A加载Rewrite模块:1 |# w0 v1 j* i9 C5 U4 s
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。& K+ g% I F% w h; [
5 \: i& w( b& H$ p$ x) `* a允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
8 u; j, ?8 t8 M
& D6 l( Z$ {: t$ W5 h# AllowOverride controls what directives may be placed in .htaccess files.% T! u- P# `& u, N; n3 p! V
# It can be “All”, “None”, or any combination of the keywords:+ R) L( p) f1 C Z) Z, i& t
# Options FileInfo AuthConfig Limit
& `* i2 [1 y# W. ^/ F#
3 Q+ D5 S5 g% yAllowOverride All
5 |( O( t. V6 a' Z* m7 K& i2 y5 B! w% u, b1 ]+ Q q& g& ?/ \
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
5 o8 P. Y; V" j/ G2 O! v! Z8 I+ P* p* \1 S- @" O" o/ D
Apache Rewrite模块的简单应用:/ q4 \# S) l; Z- @3 Z" o
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。( A# b) u0 f1 U
( q- I i6 {! l. ]2 a% Z2 Z' u9 C
1、请求跳转+ N7 X6 W$ N3 E6 Z; r( T
目的是如果请求为.jsp文件,则跳转至其它域名访问。
R7 G6 z4 d3 W* _2 O例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页3 L( }# T) W5 t# ^. E) ^' c5 O
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
V6 t5 Q0 p# i5 U, ~# {4 K# ~修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容! C Z* J; v0 L! ?1 U
- RewriteEngine on
. N9 }. C4 a* J- G5 L! Z8 R - #开启Rewrite模块
, [, u5 M; x! ~3 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为不区分大小写
9 {* M# I. m( K( u+ S2、域名跳转' O' ^5 P$ k) C8 P) m% _4 r
如果请求为old.xp6.org下的所有URL,跳转至b./ n; j% D; a7 c6 t
- RewriteEngine on
3 a) ~1 n4 {# s4 g - #开启Rewrite模块0 O' q* F1 {# T# O# J
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
8 ^6 ]1 B/ P7 B2 x7 X- }5 O6 ?; m+ { - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
, [% \/ G& p: l; d( ~' Q - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链/ N2 H# V# b% T; u) R* M# c0 C
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
7 m. K3 e8 q0 f- F. a; d! E& o- j$ E- RewriteEngine on% z2 g. j5 u2 H( @; y6 G
- #开启Rewrite模块7 {% Q; {* w9 f2 E/ U* T$ P4 A
- RewriteCond %{HTTP_REFERER} !^$
9 y% z( d4 X" o3 z" B - #如果不是直接输入图片地址
( M. J" `. u+ j" t, Y - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
C/ x0 u$ X' `# V9 { - #且如果不是img.xp6.org所有子域名调用的
* V" q/ r6 G$ k& `7 w- w6 k - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
+ e( f, o" P/ w* {; y# Y6 Q - RewriteCond %{HTTP_REFERER} !qq.com [NC]
3 S, D a2 S1 E8 s' {; e - RewriteCond %{HTTP_REFERER} !google.com [NC]
" e8 g$ I: }9 K. T; C - RewriteCond %{HTTP_REFERER} !google.cn [NC]
3 ^- ^9 ?9 J/ `& u" T2 ^+ T: Z - RewriteCond %{HTTP_REFERER} !baidu.com [NC]
' {* E' P" c2 J - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]; X9 S! X7 j$ E: [! e
- 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 }. P. s/ X0 s9 Z1 H在Apache2\conf\httpd.conf 最后一行添加9 @% _ q, n+ h- [ Z9 O
- RewriteEngine On* ~% N# z! J, U) A- M9 W8 R
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
& M. {3 N6 A& j8 B
7 Y% i5 v# o+ BLinux+Apache环境配置类似。
- ~7 c ~- V$ P4 u G) n9 p4 _; H% p4 c- G4 R) z! M
|
|