Запретить доступ к одному из двух сайтов, использующих один и тот же.htaccess


Мне нужно настроить свой файл .htaccess, чтобы запретить доступ к сайту, если они обращаются к staging.example.com.

У меня есть магазин Magento 2, и я настроил развертывание с помощью Capistrano, которое будет развертываться в 2 отдельных доменах: staging.example.com и example.com. У них будет один и тот же файл .htaccess, и я хочу разрешить доступ к промежуточному сайту только по IP-адресу.

В настоящее время вы используете Cpanel, и у вас нет доступа к файлам vhost.

Author: unor, 2018-03-30

1 answers

Вы можете использовать что-то вроде этого кода в своем файле DOCUMENT_ROOT/.htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?subdomain\.com$ [NC]
RewriteCond ${ipmap:%{REMOTE_ADDR}} !^(127\.0\.0\.1|192\.168\.|10\.|1\.2\.3\.4)$
RewriteRule ^ - [F]

Источник: ответ от анубхавы о переполнении стека

Вы также можете разрешить определенные IP-адреса и запретить остальные с помощью этого:

order deny,allow
allow from 31.24.232.14
allow from 127.0.0.0
allow from 192.168.0.0
deny from all

Это также может помочь:

<If "%{HTTP_HOST} != 'www.example.com'">
Redirect / http://www.example.com/
</If>

Есть большая вероятность, что это последнее - то, что вы хотите. Если код работает, он обнаружит, что загруженный веб-сайт не example.com (а ваш поддомен). И если это твой поддомен он заблокирует все IP-адреса, кроме того, который вы указали в поле разрешить с.

<If "%{HTTP_HOST} != 'www.example.com'">
    order deny,allow
    allow from 31.24.232.14
    allow from 127.0.0.0
    allow from 192.168.0.0
    deny from all
</If>

Вы также можете попробовать:

<If "%{HTTP_HOST} = 'subdomain.example.com'">
    order deny,allow
    allow from 31.24.232.14
    allow from 127.0.0.0
    allow from 192.168.0.0
    deny from all
</If>

Для Apache 2.4+

Если вы собираетесь использовать require ip, возможно, вам придется сделать это следующим образом:

Require all denied
Require ip 123.123.123.123

Подробнее: https://stackoverflow.com/questions/37865658/htaccess-allow-deny-ip-using-require-apache-2-4

Может быть, это сработает?:

<If "%{HTTP_HOST} = 'staging.example.com'">
Require all denied
Require ip 123.123.123.123
</if>

Источники также показывают, что вам нужно RequireAny разрешить только определенные IPS. Если это так, вам, возможно, придется изменить его для вашего требования к поддомену:

<RequireAny>
Require ip 1.2.3.4
Require ip 23.34.45.56
</RequireAny>
 4
Author: Michael d, 2018-03-30 23:02:09