|
|
环境:系统 Windows+Apache 2.2; R, h4 P- a: V, H6 s, K
$ l' w" Q% n! j2 L4 J. ~% C
加载Rewrite模块:5 Y. c" v) Z% [( G2 P5 r
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
% r1 [3 y, r4 u1 }7 r% X- a! f7 `! [3 Y/ {" c6 ?9 `6 P
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):% d7 C% l% C- Z$ @3 {5 l
. R& ?: U# P. B# AllowOverride controls what directives may be placed in .htaccess files., @' ~' R; G7 z5 D: }- g
# It can be “All”, “None”, or any combination of the keywords:
. K O4 V- S- V& W2 z# Options FileInfo AuthConfig Limit
5 N1 X3 W/ |$ a#+ P% Q; g" l; m0 z$ Y: k, `' j
AllowOverride All
v0 o; b' G, R; W* z( O
9 d: J: Y" K0 D在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。* @7 s" b" @/ X5 ?) v
8 i# D7 f; l0 R8 U. MApache Rewrite模块的简单应用:: T8 _0 C0 {+ ~
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
. u: h B1 D" S+ T
- ]0 ~; v6 t6 F. Y" C1、请求跳转
0 w5 I# a. Q `7 K* M目的是如果请求为.jsp文件,则跳转至其它域名访问。
8 D! d. H# E6 S: N5 w0 Z6 f例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
F6 z3 o9 \. N6 U& d( R注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。3 j0 p2 R- ~4 F- t
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容& N* ]& f1 }& m" e3 q" P
- RewriteEngine on
" h9 a) k: M! k3 ^9 L e: ~ - #开启Rewrite模块
8 G8 q& L0 Q& 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为不区分大小写
$ {* d/ c' j8 P+ `7 x2、域名跳转1 f/ w. r" y0 U" R
如果请求为old.xp6.org下的所有URL,跳转至b.$ B1 D; d) Q5 \! R/ g- j
- RewriteEngine on( |3 q% T" Q5 ~+ M' j7 \
- #开启Rewrite模块
$ d: ?: H( C) d7 G: Q4 ~ - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]2 [9 A1 m# s' N! X' J
- #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
! d2 B z! h8 a - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
/ r+ ^4 i+ @/ V如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容1 f: l8 e, F2 _1 X/ i' `
- RewriteEngine on5 y& [ L% h/ j2 W# E4 J" S
- #开启Rewrite模块
6 |) G3 Q; [0 q) Q' L. Z0 k - RewriteCond %{HTTP_REFERER} !^$
6 w* r/ a# I4 M& O0 Z - #如果不是直接输入图片地址
7 l+ G. |7 c. T* w H# U/ M( V - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
5 u1 L) ?8 U4 q9 H - #且如果不是img.xp6.org所有子域名调用的
. A, e/ ~6 e/ v3 o {2 w - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
4 i9 R S6 W4 }) U0 s( o - RewriteCond %{HTTP_REFERER} !qq.com [NC]
7 b/ e" L1 Z& P. p0 m - RewriteCond %{HTTP_REFERER} !google.com [NC]
3 S" U a5 T9 L- f - RewriteCond %{HTTP_REFERER} !google.cn [NC]2 c! y4 T' f( P7 F; f* L
- RewriteCond %{HTTP_REFERER} !baidu.com [NC] k3 F: W9 K E- K, {$ r
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]: {; @( l X7 a, X( B
- 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文件- t; x, b( F) K n0 B/ p
在Apache2\conf\httpd.conf 最后一行添加
6 }: d O/ z# {) g* _- RewriteEngine On
, Y6 Q! A; T- _! u8 V9 | - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
8 ]4 Z; M% \, s3 h' L
" o/ h& ]( O1 g" YLinux+Apache环境配置类似。" ~0 K7 i0 b' `% Q: K
|2 N d6 \3 f6 q' v% M |
|