Apache: как избежать правил domain.com/.htaccess для sub.domain.com, который находится под domain.com DocumentRoot?

Как обойти правила domain.com/.htaccess для sub.domain.com, расположенного под domain.com DocumentRoot?

  • домен.com DocumentRoot /domain
  • sub.domain.com DocumentRoot /domain/sub
  • каталог /домен/.htaccess : Redirect 301 /art http://domain.com/article/art
  • нет .htaccess в каталоге /domain/sub

Почему также sub.domain.com/art имеет 301 редирект на domain.com/article/art, если только domain.com имеет эти правила?

Возможно, это какая-то ошибка XAMPP 1.7.4?

Обновление: с ним тоже не работает (sub.domain.com/art по-прежнему возвращает 301 редирект на domain.com/article/art):

<VirtualHost *:80>
    DocumentRoot /domain
    ServerName domain.com
    <Directory />
        AllowOverride None
    </Directory>
    <Directory /domain>
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /domain/sub
    ServerName sub.domain.com
    <Directory />
        AllowOverride None
    </Directory>
    <Directory /domain/sub>
    </Directory>
</VirtualHost>

person Binyamin    schedule 07.02.2011    source источник


Ответы (1)


Один из способов — избегать использования .htaccess и использовать виртуальные хосты.

Один VirtualHost для домена.com.

Один виртуальный хост для subdomain.com.

внутри каждого VirtualHost вы можете определить <Directory /> и <Directory /domain> для первого и <Directory /> и <Directory /domain/sub> для второго. Затем удалите все .htaccess или используйте AllowOverride None в <Directory /> (тот же эффект). Вы также увидите, что apache работает быстрее, когда ему не нужно проверять наличие .htaccess во всех родительских каталогах.

Все инструкции Directory могут содержать то же самое, что вы обычно используете в .htaccess. .htaccess — это способ позволить кому-то определить некоторые инструкции Directory, когда вы не хотите, чтобы он редактировал файлы конфигурации apache; Но файлы .htaccess связаны с наследованием дерева каталогов.

person regilero    schedule 07.02.2011
comment
Я обновил свой вопрос с записью примера кода по вашему предложению. К сожалению, sub.domain.com/art по-прежнему возвращает мне 301 редирект на domain.com/article/art. Какое-то другое решение? - person Binyamin; 07.02.2011
comment
301 запоминаются браузером, тестируйте после закрытия браузера (и очистки кеша). проверьте также через telnet (если вы знаете, как использовать HTTP через telnet). - person regilero; 07.02.2011
comment
проверьте также, что у вас нет какой-либо опции каталога, определенной в вашей основной конфигурации apache (и которая, кстати, применяется ко всем виртуальным хостам). и удалите .htaccess, если у вас нет никаких правил перенаправления, у вас не должно быть перенаправление происходит - person regilero; 07.02.2011
comment
Спасибо! Если теперь работает хорошо, после того, как я удалил AllowOverride All в httpd.conf <Directory /xampp/htdocs> и добавил только один каталог для каждого виртуального хоста, например <Directory /domain>AllowOverride All</Directory> и <Directory /domain/sub>AllowOverride All</Directory>. - person Binyamin; 08.02.2011