Apache FilesMatch ( global config) приоритет над локальным .htaccess

Я хочу защитить все интерфейсы администратора Wordpress (wp-login.php / wp-admin) в мой сервер. Для этого я хочу создать глобальную конфигурацию в Apache, запрашивая фиксированный пользователь / пароль (базовая HTTP-аутентификация), прежде чем перейти к реальной странице входа в WordPress. Это позволит избежать перегрузки PHP из-за ботов сканирования паролей.

<FilesMatch "wp-login.php">
 AuthUserFile /etc/wordpress.passwd
 AuthName "TYPE USER wp AND PASSWORD wp"
 AuthType Basic
 require valid-user
</FilesMatch>

Работает, любой файл с именем wp-login.php запросит пароль.

Но когда я запускаю сайт Wordpress, его .htaccess имеет своего рода «приоритет» над глобальной конфигурацией. Когда я открываю wp-login.php, я получаю сообщение об ошибке 404. Если я удалю / переименую .htaccess, FilesMatch будет работать, но я потеряю функцию «маски пути», которая необходима.

Wordpress .htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Я ищу способ, чтобы директива FilesMatch имела приоритет над .htaccess (модуль перезаписи): запрашивать пароль, а не перезаписывать URL (давая 404).

Есть идеи?

1
задан 29 December 2020 в 21:47
1 ответ

Решено

Wordpress .htaccess перезаписывает все, включая директивы ErrorDocument, которые используются базовой аутентификацией HTTP, кодами возврата 401 и 403. У меня были персонализированные файлы SHTML для ErrorDocument (по умолчанию на серверах cPanel). Таким образом, вместо того, чтобы запрашивать пароль, он переписывает заголовки HTTP, запрашивая пароль и , показывая страницу с ошибкой 404 одновременно, сводя с ума веб-браузер.

Чтобы исправить это, я просто установил сообщения ErrorDocument по умолчанию:

ErrorDocument 401 default
ErrorDocument 403 default
0
ответ дан 24 April 2021 в 01:04

Теги

Похожие вопросы