|
|
环境:系统 Windows+Apache 2.2
/ N% D; J, [$ G% n& A% m) ?1 z: j4 J1 W: f4 ?
加载Rewrite模块:" h4 }: r# d. _& P" M
在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”,或添加这句。7 ^2 u! p# ~) a7 n% l
. c) o, V5 Q3 y, ?允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”):. S* ?: X, n; |. F* S' U) a
$ Z4 z; N9 U+ b, |# G' r) ~# AllowOverride controls what directives may be placed in .htaccess files.
+ h. W5 A8 V- o' |5 e0 l8 M; E! k+ a# It can be “All”, “None”, or any combination of the keywords:
, @$ z+ p3 n; L5 X/ n3 N# Options FileInfo AuthConfig Limit0 Q9 i9 {; J2 c( }4 u4 p+ }1 R
#
7 J ?8 r( E; {& s; i$ q1 LAllowOverride All2 j: E. V! L. B0 ?" Z+ I
' M9 T! J+ F" i; i! [7 R0 O0 p
在Windows系统下不能直接创建“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。或者,系统设置显示扩展文件名,打开记事本另存为.htaccess文件,文件类型,所有文件。
% ^$ c& t& Z; D z# y; v8 X/ R& g) W& S3 w; e4 x4 R' |1 W
Apache Rewrite模块的简单应用:
* M, G6 o3 U& [& H2 s' `* B) C vRewrite的所有判断规则均基于Perl风格的正则表达式,通过以下基础示例能写出符合自己跳转需求的代码。
) ]1 ~: Y: n' g2 O1 |+ S
/ b! q9 J/ L6 F; `# h- l* v; e1、请求跳转# F3 T( i1 j9 ?& B6 V) z: d3 i4 C
目的是如果请求为.jsp文件,则跳转至其它域名访问。7 y$ r% U- N4 W4 Q4 z7 n1 _
例如:访问www.xp6.org/a.php跳转至b.xp6.org/b.php网页,访问www.xp6.org/news/index.php跳转至b.xp6.org/news/index.php网页
( z' ?4 {$ Z1 V/ M( \/ y2 `; Y5 j" A注意:不是使用HTML技术中的meta或者javascript方式,因为www.xp6.org/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
- B, x5 H6 i8 _% _$ ` W修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容
9 A3 [- e' L, K7 e. D4 b( z- RewriteEngine on# A! i1 u9 `# d( D' J
- #开启Rewrite模块2 E6 Z5 h3 K' k5 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为不区分大小写- N$ Z% v: d l4 H5 H' T! |
2、域名跳转0 L# N$ H2 ~* r8 D" B* q
如果请求为old.xp6.org下的所有URL,跳转至b.1 i/ h5 n D+ k- {5 p' M/ u( q* ?
- RewriteEngine on
- z h$ ^9 @: G6 ^0 l! j - #开启Rewrite模块4 ?: R7 R2 O6 i; @
- RewriteCond %{REMOTE_HOST} ^old.xp6.org$ [NC]
. [3 o, u2 q" x - #针对host为old.xp6.org的主机做处理,^为开始字符,$为结尾字符
* \* Y* m( |7 i* L# E2 B - RewriteRule (.*) http://b.xp6.org/$1 [R=301,L,NC]
复制代码 3、防盗链
! F3 r. \! i; V$ h. A8 U" m如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容8 \' O, j9 w# m; w! \
- RewriteEngine on
. n' ~: q) z- \) [9 [ - #开启Rewrite模块# G0 A9 D6 P; x, @( d. z
- RewriteCond %{HTTP_REFERER} !^$. A% ~6 ~' k" T8 W5 i' [& R
- #如果不是直接输入图片地址
+ N5 Y. V( c& z) A1 L' l - RewriteCond %{HTTP_REFERER} !img.xp6.org$ [NC]
! J# Q& y# y q5 R) O - #且如果不是img.xp6.org所有子域名调用的
8 _, v, b! g( E- L3 }+ q: A5 q+ f" d - RewriteCond %{HTTP_REFERER} !img.xp6.org/(.*)$ [NC]
7 J0 V) M" r: \0 P" |8 g - RewriteCond %{HTTP_REFERER} !qq.com [NC]3 \' C; f5 d) _8 x: X$ v+ r
- RewriteCond %{HTTP_REFERER} !google.com [NC]. j+ V8 l( o9 ?8 S' M& ~' w
- RewriteCond %{HTTP_REFERER} !google.cn [NC]
1 @* h0 Z- Q2 E* ~6 A8 U. N - RewriteCond %{HTTP_REFERER} !baidu.com [NC]
3 [+ q" L- M; ^0 k6 L" | - RewriteCond %{HTTP_REFERER} !feedsky.com [NC]( s, K4 q$ [6 V( ^2 P- d
- 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文件$ ]- P& X, [9 k- ?2 X
在Apache2\conf\httpd.conf 最后一行添加
* b& H/ T2 P3 h9 \: v% z7 r! u- RewriteEngine On
; Z% C& k# \; q+ [8 e8 @ - RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
复制代码 重启Apache,登陆后台开启全伪
. `5 h, ^, J# N, T# B1 G4 f+ p" @) u9 }' f2 x
Linux+Apache环境配置类似。
8 T$ y' {3 n: u5 u9 C3 Q- Z6 L+ ~/ ^- U* g* ?: H: E9 u/ [
|
|