我最近购买了多域托管,并在我的计划中托管了多个域。其他域托管在我的主域中的子文件夹上。所以当我去它时,www.secondarydomain.com
它会显示位于的网站www.primarydomain.com/secondarydomain
。
现在我想做的是当有人试图访问www.primarydomain.com/secondarydomain
同时保持 www.secondarydomain.com 活着时阻止直接访问。
我怎样才能做到这一点?
通过启用 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:请记住,它将像http://www.primarydomain.com/foo
物理目录一样将每个 URL 重定向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。这是您要查找的基本模式匹配,如果它解析为“true”,它将按照您的指示重定向。
如果您根本不希望 www.primarydomain.com/secondarydomain 工作,您可以做同样的事情,除了重定向到错误页面。我确信 apache 和其他服务器具有类似的功能,但我只在 IIS 中处理过它。它被称为 URL 重写和重定向。
希望这可以帮助。