Запретить прямой доступ к веб-сайту на основном домене с помощью многодоменного хостинга
Недавно я приобрел многодоменный хостинг и разместил несколько доменов в своем плане. Другие домены размещаются во вложенных папках в моем основном домене. Поэтому, когда я перейду на www.secondarydomain.com
, он отобразит веб-сайт, расположенный по адресу www.primarydomain.com/secondarydomain
.
Теперь я хочу предотвратить прямой доступ, когда кто-то пытается получить доступ www.primarydomain.com/secondarydomain
, сохраняя при этом www.secondarydomain.com живой.
Как я могу это сделать?
2 answers
Включите mod_rewrite и .htaccess через httpd.conf
, а затем поместите этот код в свой .htaccess
в каталог DOCUMENT_ROOT
:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^www\.primarydomain\.com$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^\s\?]+)
RewriteRule ^ http://www.%1.com [R=302,L]
Как только вы убедитесь, что он работает нормально, измените 302 на 301.
PS: Имейте в виду, что он перенаправит каждый URL-адрес, такой как http://www.primarydomain.com/foo
, с физическим каталогом foo
на http://www.foo.com
.
РЕДАКТИРОВАТЬ - Чтобы избежать сопоставления определенных известных папок, используйте отрицательный внешний вид, например:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^www\.primarydomain\.com$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^\s\?]+)
RewriteRule ^(?!(foo|bar|baz)/).*$ http://www.%1.com [R=302,L]
Я знаю, что в IIS вы можете установить правила, чтобы, если кто-то войдет в www.primarydomain.com/secondarydomain, вы можете перенаправить их на www.secondarydomain.com . Это базовое соответствие шаблону, которое вы ищете, и если оно примет значение "истина", оно перенаправится, как вы скажете.
Если вы не хотите www.primarydomain.com/secondarydomain чтобы вообще работать, вы можете сделать то же самое, за исключением перенаправления на страницу с ошибкой. Я уверен, что apache и другие серверы обладают аналогичной функциональностью, но я имею дело с этим только в IIS. Это называется переписыванием и перенаправлением URL-адресов.
Надеюсь, это поможет.