apache伪静态.htaccess的写法和mod_rewrite规则修正符

星期日, 2012-01-08 | Author: Lee | disucz, php | 7,908 views

apache 配置:
1.加载此模块(去掉前面的#即可):LoadModule rewrite_module modules/mod_rewrite.so
2.启用规则文件加载配置:
<Directory />
Options FollowSymLinks
#AllowOverride None
AllowOverride FileInfo
Order deny,allow
Deny from all
</Directory>
3.新建.htaccess 文件 配置如下文件
RewriteEngine on
RewriteRule list-(.*)-(.*)\.html$ list.php?id=$1&sa=$2 [L]

1、mod_rewrite 简介和配置
Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等

2、mod_rewrite 规则的使用

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.pomelolee.com [NC]
RewriteRule ^/(.*) //www.pomelolee.com/ [L]
——–
RewriteEngine on
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]

3、mod_rewrite 规则修正符

1) R 强制外部重定向
2) F 禁用URL,返回403HTTP状态码。
3) G 强制URL为GONE,返回410HTTP状态码。
4) P 强制使用代理转发。
5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N 重新从第一条规则开始运行重写过程。
7) C 与下一条规则关联8) T=MIME-type(force MIME type) 强制MIME类型
9) NS 只用于不是内部子请求
10) NC 不区分大小写
11) QSA 追加请求字符串
12) NE 不在输出转义特殊字符 \%3d$1 等价于 =$1

4.1、请求跳转
目的是如果请求为.jsp文件,则跳转至其它域名访问。
例如:访问www.pomelolee.com/a.php跳转至b.i5a6.com/b.php网页,访问www.pomelolee.com/news/index.php跳转至b.i5a6.com/news/index.php网页
注意:不是使用HTML技术中的meta或者javascript方式,因为www.pomelolee.com/a.php这个文件并不存在,用的是Apache2.2服务器中的Rewrite模块。
修改 .htaccess或apche的配置文件httpd.conf文件,添加以下内容

RewriteEngine on
#开启Rewrite模块
RewriteRule (.*)\.php$ http://b.i5a6.com/$1\.jsp [R=301,L,NC]
#截获所有.jsp请求,跳转到http://b.i5a6.com/加上原来的请求再加上.php。R=301为301跳转,L为rewrite规则到此终止,NC为不区分大小写
4.2、域名跳转
如果请求为old.i5a6.com下的所有URL,跳转至b.i5a6.com

RewriteEngine on
#开启Rewrite模块
RewriteCond %{REMOTE_HOST} ^old.studenthome.cn$ [NC]
#针对host为old.i5a6.com的主机做处理,^为开始字符,$为结尾字符
RewriteRule (.*) http://b.i5a6.com/$1 [R=301,L,NC]
4.3、防盗链
如果本网站的图片不想让其它网站调用,可以在 .htaccess或者apche的配置文件httpd.conf文件中添加以下内容

RewriteEngine on
#开启Rewrite模块
RewriteCond %{HTTP_REFERER} !^$
#如果不是直接输入图片地址
RewriteCond %{HTTP_REFERER} !img.i5a6.com$ [NC]
#且如果不是img.i5a6.com所有子域名调用的
RewriteCond %{HTTP_REFERER} !img.i5a6.com/(.*)$ [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteRule (.*)\.(jpg|jpeg|jpe|gif|bmp|png|wma|mp3|wav|avi|mp4|flv|swf)$ http://i5a6.com/err.jpg [R=301,L,NC]
#截获所有.jpg或.jpeg……请求,跳转到http://i5a6.com/err.jpg提示错误的图片,注:该图片不能在原域名下,也不能在该.htaccess文件有效控制的文件夹中

4、不需要定义.htaccess文件
在Apache2\conf\httpd.conf 最后一行添加
RewriteEngine On
RewriteRule ^(.*)-htm-(.*)$ $1.php?$2
重启Apache
登陆后台开启全伪
点击查看 Discuz!论坛 URL 静态化的使用的不同主机的配置文件

Tags: , , , , ,

文章作者: Lee

本文地址: https://www.pomelolee.com/866.html

除非注明,Pomelo Lee文章均为原创,转载请以链接形式标明本文地址

No comments yet.

Leave a comment

Search

文章分类

Meta