返回首页
当前位置: 主页 > 网络编程 > Php实例教程 >

Apache Rewrite URL重写伪静态详解

时间:2017-07-10 15:43来源:知行网www.zhixing123.cn 编辑:麦田守望者

Apache Rewrite 的主要功能就是实现 URL 跳转隐藏真实地址,基于 Perl 语言的正则表达式规范,平时帮助我们实现伪静态,伪目录,域名跳转,防止盗链等功能,本文详细说说 Apache Rewrite 的配置。 

配置 Apache Rewrite

Apache Rewrite 配置主要有两种,一种是针对整个 Apache 服务器的配置,此种配置的 Rewrite 规则是直接写在 httpd.conf 配置文件中,具体配置步骤如下:
(1) 去除 httpd.conf 文件中 "#LoadModule rewrite_module modules/mod_rewrite.so" 前面的 "#" 号;
(2) httpd.conf 添加如下规则:
RewriteEngine on

RewriteRule ^/t_(.*).html$ /test.php?id=$1

这现行配置的意思是当访问任何以 t_ 开头,以 .html 结尾的文件时,将 $1 用与 (.*) 匹配的字符替换后,访问相应的 test.php 页面 

Apache 针对目录配置伪静态的方法

此种配置的 Rewrite 规则需在此目录下建立一个 .htaccess 文件来书写。
配置步骤如下:

(1) 去除 httpd.conf 文件中 "#LoadModule rewrite_module modules/mod_rewrite.so" 前面的"#"号;
(2) 修改 httpd.conf 文件中的 "AllowOverride None" 为 "AllowOverride all"  同时最好将 Options 也置为 "all" ,否则可能会出问题。
(3) 在目录中建立 .htaccess 文件,并用记事本打开添加规则:
RewriteEngine on

RewriteRule ^/t_(.*).html$ /test.php?id=$1 

Apache Rewrite 规则

RewriteEngine on
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1

RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]

如果需要限制访问的地址的主机名,那么执行下一条规则 

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.xxx.com [NC] 

RewriteRule ^/(.*) http://www.xxx.com/ [L] 

Apache Rewrite 修正符

1) R 强制外部重定向
2) F 禁用 URL 返回 403 HTTP 状态码。
3) G 强制 URL GONE,返回 410 HTTP 状态码。
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   

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):Apache Rewrite
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
猜你感兴趣