Хорошо, сначала позвольте мне сказать, что вся ваша предпосылка ошибочна: существует много других способов, помимо наличия / wp-admin
для определения что вы используете Wordpress. Вы пытаетесь использовать Безопасность через Неизвестность , и, поскольку вы не скрываете все, вы не делаете этого особенно изящно.
Если оставить в стороне эти врожденные проблемы, быстро взгляните на ваш RewriteRule
кажется неправильным.
Согласно документации Apache :
Что сопоставляется?
В контексте VirtualHost шаблон изначально будет сопоставляться с частью URL-адреса после имени хоста и порта и перед строкой запроса (например, "/app1/index.html").
В контексте каталога и htaccess шаблон будет изначально сопоставляться с путем файловой системы после удаления префикса, который привел сервер к текущему правилу RewriteRule (например," app1 / index.html "или" index.html "в зависимости от того, где определены директивы).
Проще говоря, это означает, что вам нужно больше пути к wp-admin
в вашем правиле, если вы хотите сделать это в Контекст каталога
(например, ^ domain.com / wp-admin ($ | /)
). Простым / наивным решением было бы изменить ваше регулярное выражение на ^. * wp-admin ($ | /)
и просто сопоставьте все , содержащее wp-admin
(что также является хорошим способом проверить, что само правило анализируется) .
Если вы настаиваете на использовании этого пути «безопасности», я бы посоветовал внести это изменение в контекст VirtualHost
(или файл /wp-admin/.htaccess
). of в контексте Каталога
для всего вашего сервера. Его проще писать и надежнее. (Ваше текущее решение ломается, если кто-то на вашем сервере НЕ хочет, чтобы его страница администратора WordPress была заблокирована (и, вероятно, многие люди этого не сделают - например, кто-то с динамическим IP-адресом). Это делается в каждом VirtualHost
или файл .htaccess
позволяет вам держать определенные сайты «разблокированными».)
VirtualHost
(или файл /wp-admin/.htaccess
) вместо контекста Directory
для всего вашего сервера . Его проще писать и надежнее. (Ваше текущее решение ломается, если кто-то на вашем сервере НЕ хочет, чтобы его страница администратора wordpress была заблокирована (и, вероятно, многие люди этого не сделают - например, кто-то с динамическим IP-адресом). Выполнение этого в каждом VirtualHost
или файл .htaccess
позволяет вам держать определенные сайты «разблокированными».) хотя я бы посоветовал внести это изменение в контекст VirtualHost
(или файл /wp-admin/.htaccess
) вместо контекста Directory
для всего вашего сервера . Его проще писать и надежнее. (Ваше текущее решение ломается, если кто-то на вашем сервере НЕ хочет, чтобы его страница администратора wordpress была заблокирована (и, вероятно, многие люди этого не сделают - например, кто-то с динамическим IP-адресом). Выполнение этого в каждом VirtualHost
или файл .htaccess
позволяет вам держать определенные сайты «разблокированными».)