Запретить прямой доступ к веб-сайту на основном домене с помощью многодоменного хостинга


Недавно я приобрел многодоменный хостинг и разместил несколько доменов в своем плане. Другие домены размещаются во вложенных папках в моем основном домене. Поэтому, когда я перейду на www.secondarydomain.com, он отобразит веб-сайт, расположенный по адресу www.primarydomain.com/secondarydomain.

Теперь я хочу предотвратить прямой доступ, когда кто-то пытается получить доступ www.primarydomain.com/secondarydomain, сохраняя при этом www.secondarydomain.com живой.

Как я могу это сделать?

Author: Ozzy, 2012-09-19

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]
 2
Author: anubhava, 2012-09-21 05:26:33

Я знаю, что в IIS вы можете установить правила, чтобы, если кто-то войдет в www.primarydomain.com/secondarydomain, вы можете перенаправить их на www.secondarydomain.com . Это базовое соответствие шаблону, которое вы ищете, и если оно примет значение "истина", оно перенаправится, как вы скажете.

Если вы не хотите www.primarydomain.com/secondarydomain чтобы вообще работать, вы можете сделать то же самое, за исключением перенаправления на страницу с ошибкой. Я уверен, что apache и другие серверы обладают аналогичной функциональностью, но я имею дело с этим только в IIS. Это называется переписыванием и перенаправлением URL-адресов.

Надеюсь, это поможет.

 1
Author: user1437891, 2012-09-19 19:52:20