Apache只在vhost文件设置虚拟主机的rewrite

如果在httpd.conf设置, 将会是全局的,下面是如何在虚拟主机中设置.

如何使用rewrite步骤:

1. 配置apache,启用rewrite机制,修改httpd.conf

在httpd.conf中启用rewrite

LoadModule rewrite_module modules/mod_rewrite.so       #如果没有这一行则在配置文件中添加这一行

2. 配置虚拟主机

修改 hosts文件添加你的 ip和域名对应,如下事例

127.0.0.1       www.xxx.com

在 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:/apache/htdocs/static"           #根据项目实际情况填写
    #域名
    ServerName www.sss.com
    ErrorLog "logs/dummy-host2.somenet.com-error.log"
    #CustomLog "logs/dummy-host2.somenet.com-access.log" common
    #配置rewrite相关选项,
    <Directory "C:/apache/htdocs/static">
    #拒绝所有的访问
    #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:/apache/htdocs/static">
    #拒绝所有的访问
    #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服务

 

修改时间 2018-04-25

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
JavaScript 引用类型
WordPress 后台添加菜单
Node.js dns 模块
Express.js CSRF 安全防护
Page Visibility API
JavaScript 类操作 classList
CSS 滚动条样式修改
JavaScript 的 this 指向