如何使用rewrite步骤:
1. 配置apache,启用rewrite机制,修改httpd.conf
在httpd.conf中启用rewrite
LoadModule rewrite_module modules/mod_rewrite.so #如果没有这一行则在配置文件中添加这一行
2. 配置虚拟主机
修改 hosts文件添加你的 ip和域名对应,如下事例
127.0.0.1 www.idcspy.org
在 http.conf文件中启用虚拟主机
# Virtual hosts 启用虚拟主机
Include conf/extra/httpd-vhosts.conf#这一行是包含虚拟主机的配置文件
3. 修改 httpd_vhosts.conf文件,配置虚拟主机并支持rewrite
<Direcotry >段的配置,默认值,是在httpd.conf的中配置,看根目录.
<VirtualHost *:80>
#ServerAdmin webmaster@dummy-host2.somenet.com
#文档的根目录
DocumentRoot "C:/myenv/apache/htdocs/static3" #根据项目实际情况填写
#域名
ServerName www.idcspy.org
ErrorLog "logs/dummy-host2.somenet.com-error.log"
#CustomLog "logs/dummy-host2.somenet.com-access.log" common
#配置rewrite相关选项,
<Directory "C:/myenv/apache/htdocs/static3">
#拒绝所有的访问
#Deny from all
#允许所有访问
Allow from all
#是否显示列表(在发布项目后一般是不启用,对于这个配置,针对 DocumentRoot在htdos外的目录生效)
#Options +indexes
#是否启用rewrite
Allowoverride all #启用rewrite
</Directory>
</VirtualHost>
4.在目录下添加了一个 .htaccess 文件,这个文件时配置rewrite机制和规则,这个文件要和项目的入口文件index.php在同一个目录下
<IfModule rewrite_module>
#写你的rewrite规则
RewriteEngine On
#news-id(\d+)\.html$是规则 news.php?id=$1是转发的页面
# 可以配置多个规则,匹配的顺序是从上到下
RewriteRule news-id(\d+)\.html$ news.php?id=$1
RewriteRule news-id(\d+)\.html$ error.php
</IfModule>
5、 这个rewrite的规则也直接在 <Direcotry > 段直接配置
<Directory "C:/myenv/apache/htdocs/static3">
#拒绝所有的访问
#Deny from all
#允许所有的访问
Allow from all
#是否显示列表(在发布项目后一般是不启用,对于这个配置,针对 DocumentRoot在htdos外的目录生效)
#Options +indexes
#是否启用rewrite
Allowoverride all
#我们有时候,也可以把rewrite机制和规则写这里
#RewriteEngine On
#RewriteRule news-id(\d+)\.html$ news.php?id=$1
</Directory>
配置好后要记得重启apache服务.