【转】 通过 Apache 配置 Rewrite 支持 .htaccess
- 首先确定您使用的 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)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用,改好后将 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文件用文本编辑器打开后,查找
<Directory />
Options FollowSymLinks
AllowOverride
None
</Directory>
改为
<Directory />
Options FollowSymLinks
AllowOverride
All
</Directory>
就可以了。
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 http://www.baidu.com
防止.htaccess文件被查看
order allow,deny
deny from all
制作错误提醒页面
ErrorDocument 404 http://www.baidu.com
添加 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)