首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阻止直接访问多域名托管的主域网站

阻止直接访问多域名托管的主域网站
EN

Stack Overflow用户
提问于 2012-09-20 03:48:27
回答 2查看 484关注 0票数 2

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

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

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 04:00:06

通过httpd.conf启用mod_rewrite和.htaccess,然后将以下代码放入DOCUMENT_ROOT目录下的.htaccess中:

代码语言:javascript
运行
复制
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:请记住,它会将每个带有物理目录foohttp://www.primarydomain.com/foo等网址重定向到http://www.foo.com

编辑-为了避免与某些已知文件夹匹配,请使用如下所示的负前视:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2012-09-20 03:52:20

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

如果你根本不想让www.primiydomain.com/secondarydomain工作,你可以做同样的事情,除了重定向到一个错误页面。我确信apache和其他服务器都有类似的功能,但我只在IIS中使用它。它被称为URL重写和重定向。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12501827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档