Apache - 添加虚拟目录后无法再使用 mod_rewrite

Posted

技术标签:

【中文标题】Apache - 添加虚拟目录后无法再使用 mod_rewrite【英文标题】:Apache - Can no longer use mod_rewrite after adding virtual directory 【发布时间】:2011-12-15 23:19:29 【问题描述】:

我的 apache 服务器设置了非常基本的配置。我以前只从 apache 提供一个网站,我们称之为 example.com。在 httpd.conf 文件中,我有一些代码强制网站始终在 url 中显示 www。

我最近为该站点添加了一个子域 blog.example.com。为此,我需要在我的 httpd.conf 文件中创建 2 个虚拟目录指令。

NameVirtualHost *:80
<VirtualHost *:80>
 ServerName example.com
 DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
 ServerName blog.example.com
 DocumentRoot /var/www/blog
</VirtualHost>

紧接着,我保留了我的重写代码:

RewriteEngine On
RewriteCond %HTTP_HOST   !^www\.example\.com [NC]
RewriteCond %HTTP_HOST   !^$
RewriteRule ^/(.*)         http://www.example.com/$1 [L,R]

问题是,添加虚拟目录代码后,重写代码不再起作用。我尝试创建以下 Directory 指令,但似乎根本不起作用。

<Directory "/var/www/html">
 Options Indexes MultiViews FollowSymLinks
 Order Deny,Allow
 Allow from all
 AllowOverride All
</Directory>

此外,我尝试在网站的 html 文件夹中创建一个 .htaccess 文件并重新启动 apache,但我放在那里的任何内容都没有引起注意。

非常感谢任何帮助。谢谢!

【问题讨论】:

所有这些是在 httpd.conf 文件中,就像一个接一个,还是在单独的文件中? 这一切都在httpd.conf文件中。 好的,我想通了。我只需要在开始和结束指令中移动重写逻辑。感谢@animuson 的帮助。 【参考方案1】:

原始发帖人的评论回答:

好的,我想通了。我只需要在开始和结束指令中移动重写逻辑。感谢@animuson 的帮助。 ——亨利·沃克勒

【讨论】:

以上是关于Apache - 添加虚拟目录后无法再使用 mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章

Apache伪静态在网站目录没有反斜杠后自动添加反斜杠

apache/Tomcat:apache 使用 mod_jk 无法访问后端的 Tomcat

Apache/mod_jk 模块在运行一段时间后无法连接 jboss

wamp-apache 添加虚拟主机后无法访问文件夹

启用/禁用 mod_ssl 后 Apache 无法启动

如何使用子域链接子目录? (虚拟主机、mod_rewrite、htaccess、DNS)