【问题标题】:Prevent direct access to website on primary domain with multi-domain hosting通过多域托管防止直接访问主域上的网站
【发布时间】:2012-09-12 04:22:06
【问题描述】:

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

现在我想做的是在有人尝试访问 www.primarydomain.com/secondarydomain 时阻止直接访问,同时保持 www.secondarydomain.com 处于活动状态。

我该怎么做?

【问题讨论】:

    标签: php .htaccess hosting


    【解决方案1】:

    通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.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:请记住,它会将带有物理目录 foo 的每个 URL(例如 http://www.primarydomain.com/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 感谢您的工作示例。如何修改它以排除某些文件夹?
    • 抱歉回复晚了。请立即检查我的编辑部分。
    • 我实际上遇到了这个问题 - 几天后 htaccess 文件确实开始与其他托管域发生冲突,大多数都停止工作!所以我不得不删除 htaccess 文件。我与我的托管公司交谈,他们告诉我,如果我在子文件夹中没有 htaccess 文件,这将暗示父文件夹中 htaccess 文件的条件。
    • 有一些方法可以避免在子文件夹中执行此 .htaccess,但我建议您首先在您的问题中发布您当前的 .htaccess,并提供更多关于实际停止工作的详细信息。
    • 对不起,我犯了一个错误,你的代码很好,我只是无法让它按我想要的方式工作,所以我使用了 HTACCESS 生成器并进行了一些冲突的重定向,这弄乱了一切。一些域没有解析,一个正在从 www.thedomain.com 重定向到 www.thedomain.com/subfolder-name (其中 subfolder-name 是托管文件夹,即root/subfolder/wwwroot
    【解决方案2】:

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

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

    希望这会有所帮助。

    【讨论】:

    • 这不会造成无限循环吗?访问 secondarydomain.com 名称会重定向到我的主机(primarydomain/子文件夹),而主域会重定向到 secondarydomain.com
    • 不,我不是这个意思。您只能从 primarydomain/子文件夹重定向到您的 secondarydomain.com。你不会以相反的方式重定向。
    • 哦不,我只是认为当域名解析并连接到我的服务器时,mod_rewrite 会发生 - 但事实并非如此,因为 htaccess 在根文件夹中而不是在子文件夹中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2011-05-27
    相关资源
    最近更新 更多