2

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

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

我怎样才能做到这一点?

4

2 回答 2

2

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_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物理目录一样将每个 URL 重定向foohttp://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]
于 2012-09-19T20:00:06.403 回答
1

我知道在 IIS 中,您可以设置规则,以便如果有人进入 www.primarydomain.com/secondarydomain,您可以将他们重定向到 www.secondarydomain.com。这是您要查找的基本模式匹配,如果它解析为“true”,它将按照您的指示重定向。

如果您根本不希望 www.primarydomain.com/secondarydomain 工作,您可以做同样的事情,除了重定向到错误页面。我确信 apache 和其他服务器具有类似的功能,但我只在 IIS 中处理过它。它被称为 URL 重写和重定向。

希望这可以帮助。

于 2012-09-19T19:52:20.007 回答