使用多域托管阻止直接访问主域上的网站

时间:2012-09-19 19:48:27

标签: php .htaccess hosting

我最近购买了多域托管,并在我的计划中托管了多个域名。其他域托管在我的主域中的子文件夹中。因此,当我转到www.secondarydomain.com时,它会显示位于www.primarydomain.com/secondarydomain的网站。

现在,当有人试图访问www.primarydomain.com/secondarydomain同时保持www.secondarydomain.com活着时,我想要阻止直接访问。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.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:请注意,它会将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]

答案 1 :(得分:1)

我知道在IIS中,您可以设置规则,以便如果有人访问www.primarydomain.com/secondarydomain,您可以将其重定向到www.secondarydomain.com。它是您寻找的基本模式匹配,如果它解析为“true”,它将在您告诉它时重定向。

如果您不希望www.primarydomain.com/secondarydomain完全工作,您可以执行相同的操作,但重定向到错误页面除外。我确定apache和其他服务器具有类似的功能,但我在IIS中只能使用它。它被称为URL重写和重定向。

希望这有帮助。