Назад | Перейти на главную страницу

Apache Mod_Rewrite не работает с foo.com, но работает с www.foo.com

Я не могу активировать RewriteCond% {HTTP_HOST}, когда просто использую foo.org. Кажется, что он просто игнорирует это, но 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 настроены (я могу получить доступ ко всем этим сайтам прямо из браузера, просто перенаправление нарушено).

ОБНОВИТЬ: Был еще один виртуальный хост, включенный под сайтами. После отключения вроде все заработало. Я действительно не понимаю, почему, но я думаю, что каким-то образом другие настройки виртуального хоста использовались при вводе foo.com, и поэтому apache не нашел никаких RewriteRules.

Попробуйте включить отладку mod_rewrite с помощью следующей директивы.
RewriteLog
RewriteLogLevel

Начните с уровня 3 и покажите нам результат. Также добавьте свою версию apache.