日期:2014-05-17  浏览次数:20822 次

【转】 通过 Apache 配置 Rewrite 支持 .htaccess
  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)中加入如下代码。此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <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)