Как заблокировать доступ к каталогу wp-admin для всех доменов, кроме X, через htaccess - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть мультисайт 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]

...