mod_rewrite конфликтует с директивой Alias

#php #mod-rewrite #mod-alias

#php #mod-перезапись #mod-псевдоним

Вопрос:

Мой основной веб-сайт использует PHP / Zend Framework, а .htaccess является общим:

 RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
  

Теперь мне нужно перенести форум (в другой директории) на основной сайт. Я добавил директиву Alias внутри VirtualHost

 Alias /forums "h:/projects/forums"
  

Программное обеспечение форума использует свой собственный .htaccess. Основной URL / форумы доступны, но другие недоступны. Другие URL-адреса (те, у которых нет соответствующих файлов) пересылаются на основной сайт. Другими словами, выбирается файл .htaccess основного сайта (/), а не тот, что находится в каталоге /forums .

Ответ №1:

Попробуйте добавить новый, RewriteCond чтобы указать вашему основному .htaccess файлу игнорировать запросы в разделе /forums . После того, как запрос проходит через этот файл, он должен быть подхвачен /forums/.htaccess файлом, хотя я признаю, что не совсем уверен, влияет ли это Alias на это.

Условие будет выглядеть примерно так:

 RewriteCond %{REQUEST_URI} !^/forums [NC]
  

Здесь говорится «выполняйте следующий запрос только в том случае, RewriteRule если он не начинается с /forums «. [NC] В конце говорится игнорировать оболочку вкл /forums , поэтому не будет иметь значения, действительно ли запрос предназначен для /Forums или /FORUMS .