Apache ModRewrite 无法与 foo.com 配合使用,但可以与 www.foo.com 配合使用

Apache ModRewrite 无法与 foo.com 配合使用,但可以与 www.foo.com 配合使用

当我仅使用 foo.org 时,我无法触发 RewriteCond %{HTTP_HOST}。它似乎只是忽略了它,但 www.foo.org 和 sub.foo.org 似乎触发了重写条件。我可能忽略了一些简单的东西,希望一些更有经验的人能够提供帮助。

<VirtualHost *:80>
    ServerName foo.org
    ServerAlias sub.foo.org www.foo.org

    DocumentRoot /var/www/

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.foo.org$
    RewriteRule ^/(.*)$ http://sub.foo.org/$1 [L,R]

我尝试了以下 3 种设置(替代上面的设置)

    RewriteCond %{HTTP_HOST} ^www.foo.org$
    RewriteRule ^/(.*)$ http://sub.foo.org/$1 [L,R]  # WORKS :)


    RewriteCond %{HTTP_HOST} ^sub.foo.org$
    RewriteRule ^/(.*)$ http://www.foo.org/$1 [L,R] # WORKS :)


    RewriteCond %{HTTP_HOST} ^foo.org$
    RewriteRule ^/(.*)$ http://sub.foo.org/$1 [L,R] # DOESN'T WORK!!!

这对我来说真的很令人沮丧,因为它看起来很简单,但我却无法弄清楚。有人有什么想法吗?所有 DNS 条目都已设置(我可以直接从浏览器访问所有这些网站,只是重定向已损坏)。

更新:在 sites-enabled 下启用了另一个虚拟主机。禁用它之后,一切似乎都正常了。我不太明白为什么,但我认为在输入 foo.com 时不知何故使用了其他虚拟主机的设置,因此 apache 找不到任何 RewriteRules。

答案1

尝试使用以下指令启用 mod_rewrite 调试。
重写日志
重写日志级别

从第 3 级开始并向我们展示结果。另外请添加您的 apache 版本。

相关内容