|
环境:系统 Windows+Apache 2.2
. ^/ b4 q% J2 R. p1 c- a
! A4 Q; s. M1 D7 c" C加载Rewrite模块:
" ]. j4 k" `/ I6 A0 ~; `在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
2 V% x8 a# ^+ u; K0 h' [# k; \: b( U. p7 D3 b: l$ _ { |% A. z! R
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):7 L* N+ ]6 @* B4 W- F8 x% {
- g( [, C* |* H
# AllowOverride controls what directives may be placed in .htaccess files.- y$ ?! f) B2 d3 f5 L
# It can be “All”, “None”, or any combination of the keywords:6 q9 `8 s; \( A( P' p4 R) q3 G
# Options FileInfo AuthConfig Limit
0 m: ]6 P0 p; \/ Y#) @* X" O* h/ O4 D
AllowOverride All
F: _8 [9 Y2 N9 T/ S
4 r. U% I( C0 A8 q在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。+ F7 B) A. r! q* L
- @% E* e! E8 I* j$ s% oApache Rewrite模块的简单应用: J! {' d$ L6 _6 t x e
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
7 U- b8 H: g6 _. P9 W* v
0 _+ w& a: k) u8 g) ^) E1、请求跳转
5 K2 X1 h! |) Y# ^# X, }7 K目的是如果请求为.jsp文件,则跳转至其它域名访问。
6 W8 n% H7 X5 ]% m" }+ b+ E$ }例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页2 I" W/ e2 W' m% {! n; h$ V
注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
: Z: [' _' c/ K5 Q# @7 m6 Y修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
6 {% j+ F3 g3 J' C- RewriteEngine on
& Q$ L9 e: V% g) o: D7 ^. w/ O - #开启Rewrite模块) C+ C) f/ n M: Q7 K- 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 a& V' y$ ?0 O9 ~8 A; C& v& w2、域名跳转: `* q+ k+ ~2 e X
如果请求为old.xp6.org下的所有URL,跳转至b.6 A3 `% k$ O; f9 H8 e6 a
- RewriteEngine on
6 Q6 T7 `4 M. a) G% ` - #开启Rewrite模块
- x( @. ]6 P; |$ H* z$ O% Z - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]) c7 a( Q' ^% @. q$ R
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
/ E8 L$ f* ?3 C. S, \5 j) e, E - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链: ]0 u6 @& A# K2 U# K
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
* Q( C0 q" g: E7 \' A- RewriteEngine on# p6 p- ~" c1 L" U; Z. A2 p
- #开启Rewrite模块8 `+ b# Y9 h+ j" Y# T, F# p& _
- RewriteCond %{HTTP_REFERER} !^$
# S$ `% f( j. K0 l" g* [" \ - #如果不是直接输入图片地址, z( }( _/ @$ K( Q5 h% G
- RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]' |. _. s/ i0 u
- #且如果不是img.xp6.org所有子域名调用的. I! L! W% {+ H6 S$ v
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]; ]: d- B( X. U2 j
- RewriteCond %{HTTP_REFERER} !qq.com [NC]! V+ T( m) D& u+ S0 ]' ]' @
- RewriteCond %{HTTP_REFERER} !google.com [NC]
$ L: F! m# \5 ]9 H+ a( T" k) i - RewriteCond %{HTTP_REFERER} !google.cn [NC]" e/ y4 r3 X1 g- p; ]
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]
% u3 O/ e. ?# s+ S- @" | - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
3 W/ P: ?& `" ~; ?. I/ m - 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文件
) ^* e ?' r, F$ V! x, }在Apache2\conf\httpd.conf 最后一行添加
- y& O1 }8 U, |$ {- I# `. {& G8 W- RewriteEngine On
6 U4 T0 j6 H3 [8 X9 z4 A/ w - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪# N4 n& }0 O3 E5 S8 s6 O
# ]1 z2 B. H3 n8 X P. ?# R
Linux+Apache环境配置类似。
5 Z j9 h2 D# l! t& q: `4 a6 a1 C( u/ m9 N6 b8 t
|
|