通过 Apache 配置 Rewrite 支持 .htaccess

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【转】通过 Apache 配置 Rewrite 支持 .htaccess

2011-03-01 14:16

转载自分享

最终编辑ruhaole

1.首先确定您使用的 Apache 版本,及是否加载了 mod_rewrite 模块。及是否加载了 mod_rewrite 模块 .

mod_rewrite 的是一个 Apache 模块,可使服务器操纵请求的网址。根据一系列规则对传入的网址进行检查,规则中包含一个正则表达式来检测特定的格式。如果在地址中发现了一个格式,并且满足适当的条件,该格式就会被一个替代的字符串或者是动作取代。

Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:

清单 1. Apache 1.x 的加载模块代码

LoadModule rewrite_module libexec/mod_rewrite.so

AddModule mod_rewrite.c

Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:

清单 2. Apache 2.x 的加载模块代码

LoadModule rewrite_module modules/mod_rewrite.so

如果存在,那么在配置文件(通常就是 conf/httpd.conf)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 中去,如果加在虚拟主机配置外部将可能无法使用,改好后将 Apache 重启。稍后再解释这段代码的意思

Apache配置:

支持httpd.conf 配置和目录 .htaccess配置

启用rewrite

# LoadModule rewrite_module modules/mod_rewrite.so

去除前面的 #

LoadModule rewrite_module modules/mod_rewrite.so

启用.htaccess

AllowOverride None 修改为:AllowOverride All

----------------------------------------------------------

--------------------

让apache服务器支持.htaccess

如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了。打开httpd.conf文件用文本编辑器打开后,查找

Options FollowSymLinks

AllowOverride None

改为

Options FollowSymLinks

AllowOverride All

就可以了。

RewriteEngine On

RewriteBase /

伪静态

RewriteRule ^(article)-([0-9]+)\.htm$ $1.php\?id=$2

根据IP阻止用户访问

order allow,deny

deny from 127.0.0.1

allow from all

Redirects 转向

Redirect /article.php

防止.htaccess文件被查看

order allow,deny

deny from all

制作错误提醒页面

ErrorDocument 404

添加 MIME 类型

AddType application/x-shockwave-flash swf

Tips: 设置类型为 application/octet-stream 将提示下载

改变缺省的首页文件

DirectoryIndex aa.html index.html index.pl default.htm

防止目录列表时显示

IndexIgnore *

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule ^([0-9a-zA-Z.]+)$ demo.php?id=$1

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

RewriteEngine on

RewriteCond %{HTTP_HOST} !^ [NC] RewriteRule ^(.*) / [L] RewriteEngine on

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

1、Rewrite规则简介:

相关文档
最新文档