当我仅使用 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。