" RewriteEngine On"在虚拟主机不工作

时间:2014-10-09 06:55:33

标签: apache .htaccess mod-rewrite virtualhost

这是我的虚拟主机条目。

版本:Apache / 2.2.15(Unix)

<VirtualHost *:80>
    ServerName web1.net
    ServerAlias www.web1.net

    ServerAdmin webmaster@web1.net

    DirectoryIndex index.html index.php

    LogLevel warn
    ErrorLog /var/log/httpd/web1.net_error_log
    CustomLog /var/log/httpd/web1.net_access_log combined

    DocumentRoot /web/web1.net/htdocs

    <Directory "/web/web1.net/htdocs">
        Options Indexes FollowSymLinks Includes ExecCGI
        Order allow,deny
        Allow from all
        AllowOverride All

        RewriteEngine On    #This is not working
    </Directory>

</VirtualHost>

.htaccess文件

RewriteEngine on   # It works.
#abc5
RewriteCond %{HTTP_HOST} ^example\.org$ [NC]
RewriteRule .* http://www.example.com

当我在.htaccess文件中放置相同的(RewriteEngine)它开始工作时,为什么我需要在虚拟主机中存在时将它放在.htaccess中。

我是否需要在Apache配置中进行任何其他更改?

1 个答案:

答案 0 :(得分:0)

如果要启用重写,则需要在每个目录的.htaccess中使用RewriteEngine on。简而言之:

    来自服务器配置的
  • RewriteEngine on不会对DocumentRoot/.htaccess
  • 生效 RewriteEngine on中的
  • DocumentRoot/.htaccess对任何/subdir/.htaccess
  • 均无效