У меня есть мультисайт WordPress, и у нас есть разработка для конвейера разработки.Я пытаюсь отключить любой доступ к каталогам wp-login.php и wp-admin со всех других доменов, кроме my-beta-site.com.У меня были проблемы, заставляющие это работать, используя пользовательские 404 страницы в WordPress.Я чувствую, что мой заказ в .htaccess является причиной этого, и я, возможно, неправильно применил свои правила перезаписи.Я потратил довольно много времени, чтобы заставить это работать хорошо с перенаправлением https (это вызывало бесконечный цикл с 403 против 404).Мое текущее решение работает, но оно ломает пользовательские 404 страницы в каталоге wp-admin, даже если оно не соответствует указанному домену.Я бы хотел это исправить.
Текущий код, нарушающий пользовательские 404
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# if it is not for domain gapbeta.org then block it
RewriteCond %{HTTP_HOST} !^(.*)?my-beta-site\.com [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin/(.*)?$
RewriteRule . - [R=404]
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
Оригинальный htaccess, без моих дополнений
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]