|
环境:系统 Windows+Apache 2.2
8 @6 L; Q1 s0 U8 R2 ]% H" x# g& x6 M- ^. ]
加载Rewrite模块:
7 p8 \* V- M7 K$ B4 v在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。; s% b' C8 \4 c+ V& Y, M
* c: C+ J4 L; y L5 y) B( }, u
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):! `: ^0 W( j9 S
8 k0 c% P- C8 b# AllowOverride controls what directives may be placed in .htaccess files.
) L6 M1 V4 ~7 A/ [, j+ }/ N# It can be “All”, “None”, or any combination of the keywords:
& C, y' e2 d6 X1 R0 y# T0 U# Options FileInfo AuthConfig Limit
! e0 t( R1 l3 D6 o3 h* u( N7 u#
* U' f: g% q: q8 L/ EAllowOverride All7 f S( E& J$ L
, q5 ~8 d7 E* o8 G
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
8 @2 `5 Y' {8 J/ Y) k7 k B2 j H* V7 t7 i8 \. F3 O/ p
Apache Rewrite模块的简单应用: D$ i( u( ]5 u8 a/ @1 z% K& h
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。0 u1 w: Q/ G: E) J. E+ y2 m' K$ |
0 H! \4 R9 N4 b9 T. ^* `1、请求跳转
" X( ~7 P ]1 x$ V目的是如果请求为.jsp文件,则跳转至其它域名访问。! w& {& ^) B. A, v L3 i0 c
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
/ ~) Q# N- `& C( M; L3 q& [注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
4 y- j" D0 M0 X8 W- r修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
& N$ b+ R I; c# e1 D( ?7 M- RewriteEngine on
) E- ~. ~) r9 h h/ L - #开启Rewrite模块2 g# p) _, _& p: F% C: D
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写
: T9 z7 O v$ d8 g2、域名跳转
; b$ h. t/ a7 a$ E4 A如果请求为old.xp6.org下的所有URL,跳转至b.8 b# I5 t* a7 U9 h D2 c
- RewriteEngine on
) r. d @. z3 C6 c* T" o! }: u7 r - #开启Rewrite模块
m2 \" E/ k6 L& _ \+ @ - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]# `+ \# w. u0 N* j) O5 @
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符8 d3 t W. V; `
- RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链# s8 n6 _; ~) @0 w# E
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
1 G4 f0 c, q+ V/ Z `- RewriteEngine on
4 a4 l) D3 G# L1 s. ]% V - #开启Rewrite模块
: u3 u! `1 _; q - RewriteCond %{HTTP_REFERER} !^$
, B2 l* z9 U2 P3 b2 ~# ` - #如果不是直接输入图片地址
. ?% Y8 `& M7 m7 @) t. b: f- t - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
4 J6 F% E% Q1 w - #且如果不是img.xp6.org所有子域名调用的4 j4 L& w$ k8 v$ _; W: W
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]* n1 u' R" ?4 p% j9 N
- RewriteCond %{HTTP_REFERER} !qq.com [NC]
9 M1 w3 {5 m) K! Z7 r) B - RewriteCond %{HTTP_REFERER} !google.com [NC]# K7 S0 D: B: J3 ^5 D5 ?" h- {
- RewriteCond %{HTTP_REFERER} !google.cn [NC]1 h6 Q$ X+ a( W. R, Z
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]6 z1 `$ e: I3 W
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
; y) d: Q5 M; `# \$ H - 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文件& }+ k, T& i6 O! g/ w. M
在Apache2\conf\httpd.conf 最后一行添加
3 _( f- W7 ]% X \' f) S) I x) E' f- RewriteEngine On
8 V. _3 ?: b/ U. `5 A: d+ }8 b - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪) I; P4 v1 D& D4 A7 F- E8 Q8 f
' M1 u% T' g& O! hLinux+Apache环境配置类似。0 W+ `0 ^6 Y0 C0 o3 u6 j k
1 b* W) L. I1 Y2 y3 _7 T! _
|
|