|
环境:系统 Windows+Apache 2.2& | K: x |! i1 h
/ Y3 y5 l- P2 r6 u1 M7 D
加载Rewrite模块:
- C& C% E: @2 t( k# M在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。
2 J$ V: h; n! J4 d' j$ @9 U/ t' a' p0 ]; u& _! R: r) R
允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):( o* t! k* f+ T9 V# K' M5 x, u
3 n. \3 i& g* Y6 w# AllowOverride controls what directives may be placed in .htaccess files.) ~% L/ Z, o$ d
# It can be “All”, “None”, or any combination of the keywords:
+ }$ B5 P& B4 i. @# Options FileInfo AuthConfig Limit% q. ^1 u2 @" _7 F* i# s- c! w. Y
#' o3 B3 _$ T7 B1 ]
AllowOverride All
3 d8 _, G2 v7 y" y/ |1 Q$ x8 o, Y& E8 G
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
; a, d& G# n, ]! j7 c6 {6 T; d L" L- ^ o
Apache Rewrite模块的简单应用:
' O6 d6 `. e2 ^/ j5 u! \- E/ ERewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。$ q& n* b/ `- `
# p' `: P# P! f2 L1、请求跳转
, D# X1 {! G, `4 `6 o$ q目的是如果请求为.jsp文件,则跳转至其它域名访问。9 v( w$ b( \% y* Q7 Q
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
* H5 ^1 M3 j+ v+ g% T注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
# k+ J) z' F8 C0 g. F修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容' ~4 I' O1 \ F$ r1 x
- RewriteEngine on
1 P: d* @2 C" q8 C - #开启Rewrite模块' S. c/ ]4 A3 g+ v( R8 }7 P6 m
- RewriteRule (.*)\.php$ http://www.xp6.org/$1\.jsp [R=301,L,NC]
复制代码 #截获所有.jsp请求,跳转到http://b.xp6.org/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写
, V1 B( ]0 D! B) ?# o/ d) T# f2、域名跳转
4 z& m( P( n1 Y& h+ `$ O如果请求为old.xp6.org下的所有URL,跳转至b.
& [& G: y# G/ U' u$ a- T0 m- RewriteEngine on
2 O7 ^" Z+ R1 W7 d* Q, g6 t$ \; u1 b - #开启Rewrite模块
) ^- ?/ ^ A' T+ R4 [8 I' n - RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
4 {* L4 ^& i) _ - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
6 p+ O, z' g6 C1 i( ] - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链7 T9 T* W& @0 N2 G
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容) V/ ^; `( l/ b" K) f
- RewriteEngine on e8 X0 c0 z2 y, n7 U
- #开启Rewrite模块' a9 ~$ G. P/ \
- RewriteCond %{HTTP_REFERER} !^$* l- Z: \( D: y1 f% V
- #如果不是直接输入图片地址
3 \# x6 J A% W - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]" U$ b* S1 j$ o+ a V6 ]
- #且如果不是img.xp6.org所有子域名调用的5 V' Y; W: V" q8 i g B
- RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
& K3 U8 j" ~ R! b9 e" T - RewriteCond %{HTTP_REFERER} !qq.com [NC]9 ~1 x1 U/ h# N, }+ [! e( g
- RewriteCond %{HTTP_REFERER} !google.com [NC]- o% W$ o9 o2 [8 I6 @2 m/ Q0 y: s& U
- RewriteCond %{HTTP_REFERER} !google.cn [NC]7 m4 n1 S0 {9 _$ p" W% Q; D
- RewriteCond %{HTTP_REFERER} !baidu.com [NC] T; a( o+ Q' S+ Q; _
- RewriteCond %{HTTP_REFERER} !feedsky.com [NC], a0 A% O' t% J9 P
- 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 X, o7 g/ e; P* `" Y在Apache2\conf\httpd.conf 最后一行添加9 j3 ~! ^+ C/ b4 i# e
- RewriteEngine On0 F0 q4 N1 X U) |
- RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪) z$ y$ o8 A& ^8 V2 ]/ y
8 [/ G: E2 U1 s$ F& W- Q' F$ v8 HLinux+Apache环境配置类似。! Z2 N& s" J7 ~5 B R; K
e1 J: [0 h. h$ i0 \: Z& Z& L) R u |
|