У меня установлен WordPress в корневом каталоге моего веб-сервера, и он помещает следующие правила перезаписи в корневой каталог .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
В подкаталоге forum
- другое PHP-приложение, которое должно быть защищено HTTP Basic auth. Как и следовало ожидать, в каталоге forum
есть файл .htaccess
, который выглядит следующим образом:
AuthType Basic
AuthName MembersArea
AuthUserFile /home/user/public_html/needsecure/.cnk-htpasswd_db/.1_htpasswd
require valid-user
Теперь операторы RewriteCond
в корневом файле .htaccess
должны, насколько я могу судить, гарантировать, что, если пользователь посещает подкаталог напрямую, переписывание не должно происходить. То же самое для физического файла и для файлов с именем index.php
. Тем не менее, при посещении /forum
, /forum/
или даже /forum/index.php
отображается страница WordPress 404.
Я пытался исключить каталог forum
из правил перезаписи вместе с
RewriteCond %{REQUEST_URI} ^forum/
до последнего правила перезаписи, которое не сработало. Я тоже пробовал
RewriteRule ^forum(.*)$ - [L]
выше всех других правил, и это тоже не сработало. Я даже попробовал RewriteEngine Off
в forum/.htaccess
, и это не сработало.
Если я удаляю правила переписывания WordPress, это решает проблему, а если я удаляю основные правила аутентификации, это решает проблему. Это происходит только тогда, когда присутствуют оба: как если бы базовая аутентификация полностью нарушала условия перезаписи. Это известная вещь?
Есть предложения? Теперь это действует мне на нервы, я балуюсь этим всю ночь.