|
环境:系统 Windows+Apache 2.2# t" F+ n0 z2 \) g4 _% [2 j. Y
- C7 ]7 U# e% d; K/ O5 x加载Rewrite模块:
$ O$ R, D2 t/ L- R& e在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
3 s- y- |5 k- |* U* |
|& J+ g3 n8 d3 E ?! P允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):
: T5 k6 T2 {2 b: P# Y
" [4 a" ~2 B, P4 ]8 f7 n+ m# AllowOverride controls what directives may be placed in .htaccess files.
/ [# |9 r7 D- F F! ]# It can be “All”, “None”, or any combination of the keywords:7 w+ R% L( M: F- ~/ A" h
# Options FileInfo AuthConfig Limit
6 D$ {" _- N. ^#; |/ e- Z# ~! S. @5 E* s
AllowOverride All
2 T' x" T h$ S- p. C: k" y) F0 a! N/ c& m4 q0 l! C' p& f1 n
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。1 m% I# P2 d4 n; ]0 J# e
, C+ p9 c8 b/ V% U9 ^: Q
Apache Rewrite模块的简单应用:% r# I1 w# N! I
Rewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
1 |+ @! D7 L0 L# z) M
( S% [2 i/ q8 B6 p2 S8 f0 }$ Q1、请求跳转. m, a* \6 S5 n7 ?
目的是如果请求为.jsp文件,则跳转至其它域名访问。
- ?7 n7 n1 m! S, G5 g; o例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
* |( U+ ~& y0 R5 w0 _6 k. M" F; w注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
- P5 H2 E1 U/ D4 b修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容% w @+ M( a. T5 l% A9 B
- RewriteEngine on
, u: |" c X+ a' M" Z - #开启Rewrite模块4 G1 @7 q- Y0 o" r2 {! x
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写
# @3 y- g: u: O0 M* D. V2、域名跳转0 i( C& B `/ H/ s
如果请求为old.xp6.org下的所有URL,跳转至b.6 G) t% Q5 _0 B) ]6 H
- RewriteEngine on
( \$ ?9 \' G' ?8 T- g - #开启Rewrite模块4 x. [7 ^% {9 g
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
. A( b' I' t. t+ L* | - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
2 }" N0 p2 k6 R: ^ Q: e - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
" _6 M2 A9 p4 h3 V6 q如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容
+ ~" ^% t# M1 I% Z# b3 a- RewriteEngine on
5 Q+ _ g' L( A& A) V Q - #开启Rewrite模块8 W! x* K* i1 q- E# K# @$ M5 l
- RewriteCond %{HTTP_REFERER} !^$9 V, o+ M! {; S1 P
- #如果不是直接输入图片地址
) L+ R! ?4 h% s# v - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
8 m' C5 D* w5 F* t0 {/ u0 A$ _ - #且如果不是img.xp6.org所有子域名调用的
3 A2 t W9 ^6 ~# q/ P6 \6 q - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]9 f* M' M9 B9 j; R' K! e
- RewriteCond %{HTTP_REFERER} !qq.com [NC]
& h) ^4 N5 r4 L6 N. K4 v - RewriteCond %{HTTP_REFERER} !google.com [NC]
" |: I* Y7 F2 ?* {9 F6 W - RewriteCond %{HTTP_REFERER} !google.cn [NC]9 x" z* \. G c9 _) e
- RewriteCond %{HTTP_REFERER} !baidu.com [NC]6 [/ t9 v7 z# ^! T
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
3 W4 v% P2 N. {/ v: 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文件% A) k# e2 Q2 U6 u: Z3 J8 C2 F
在Apache2\conf\httpd.conf 最后一行添加 R& z: [/ p0 O+ W$ u
- RewriteEngine On
8 d7 _9 b* M, v& z+ d, U - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪# Z8 z, t7 v9 [4 P5 @
# G# Q6 m" \6 a* @4 TLinux+Apache环境配置类似。
( p: x2 r( t( z" K5 Q0 B# D. I
* ~( ?9 I: {1 ]2 |: I |
|