Отключение правил перезаписи WordPress для папки и её содержимого через htaccess
У меня есть другое PHP приложение в папке с названием app
внутри моей установки WordPress, и мне нужно отключить все правила перезаписи WordPress для этой папки и её содержимого. Чтобы при переходе на www.domain.com/app
отображалась страница моего приложения, а не стандартная 404 страница WordPress.
Я знаю, что это довольно базовые правила перезаписи apache, я искал решение, пробовал некоторые варианты, но они не сработали должным образом.
Чуть не забыл, мне нужно сделать это только путем редактирования файла htaccess WordPress. При этом у приложения есть свой собственный файл htaccess.
Спасибо.
ПРАВКА: содержимое 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>
ПРАВКА: htaccess приложения
DirectoryIndex index.php
<FilesMatch "\.(php|inc)$">
Order allow,deny
deny from all
</FilesMatch>
<FilesMatch "(index.php|download.php)$">
Order allow,deny
allow from all
</FilesMatch>
Эти правила не делают много, они в основном запрещают доступ ко всем файлам типа PHP
и INC
, кроме index.php
и download.php
. Это те файлы, к которым пользователю нужен доступ, остальные - это классы, используемые внутри PHP
.
ПРАВКА 3: Решение:
Как оказалось, не было никаких проблем с файлом htaccess
WordPress или приложением. После включения отчетов об ошибках на удаленном хостинг-сервере, PHP сообщил о поврежденном файле. После его замены всё начало работать корректно. Спасибо Wietse Venema за предложение.

Стандартный файл .htaccess уже поддерживает нужное вам поведение:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Вся магия кроется в строках, начинающихся с RewriteCond. Они указывают Apache применить правило RewriteRule . /index.php [L]
(что означает "любой URL будет перенаправлен на index.php"), только если URL не является существующим файлом !-f
или существующей директорией !-d
.
Таким образом, это должно работать по умолчанию. Правила перезаписи Wordpress не применяются, когда вы пытаетесь обратиться к уже существующему файлу.
