Запретить доступ к одному из двух сайтов, использующих один и тот же.htaccess
Мне нужно настроить свой файл .htaccess
, чтобы запретить доступ к сайту, если они обращаются к staging.example.com
.
У меня есть магазин Magento 2, и я настроил развертывание с помощью Capistrano, которое будет развертываться в 2 отдельных доменах: staging.example.com
и example.com
. У них будет один и тот же файл .htaccess
, и я хочу разрешить доступ к промежуточному сайту только по IP-адресу.
В настоящее время вы используете Cpanel, и у вас нет доступа к файлам vhost.
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>