首页 文章

如何将一个域的所有请求完全重定向到另一个域?

提问于
浏览
1

我有一个.net mvc3网站托管在godaddy(Deluxe 4GH计划)上,最近有SSL和专用IP地址(173.201 ..),我注意到有一个奇怪的域名(比方说www.strange-domain.com) which is also pointing to my dedicated IP address (173.201 ..) . 也就是说,除了我自己的域名(比如说www.my-domain.com),这个新的奇怪域名也可以访问我网站的每个部分(我的应用程序),包括管理区域!我真的不知道希望这种事情发生,因为对于搜索引擎优化,搜索引擎可能认为指向同一网站的两个域是一种作弊行为 .

所以我联系了godaddy,他们说他们无法做任何事情来防止有人将自己的域名指向我的专用IP地址 . 我认为这取决于域名所有者 . 现在,我需要实现一种机制,可以将该奇怪域的所有请求重定向到我自己的域,而不会让访问者知道它 . 也就是说:如果访问者正在请求 www.strange-domain.com/some/path/to/page ,那么他将被重定向到 www.my-domain.com/some/path/to/page 如果无法做到这一点,至少应将访问者重定向到我的域名主页: www.strange-domain.com

我知道这可能是通过IIS url重写完成的 . 我试过但失败了 . 我真的不擅长这样做 . 那么你可以通过给我一个详细的实现来帮助我吗?

此外,由于我的网站由.NET MVC3提供支持,如果网址重写不起作用,我想知道我是否可以使用某些.NET MVC3功能,例如路由系统,Global.asax ....如果两者都可以实现这一目标,哪一个是首选,为什么:)这么多问题,谢谢大家提前!:)

update1: 现在,我有以下重写规则 .

<rewrite>
<rules>
    <rule name="Redirects to www.my-domain.com" patternSyntax="ECMAScript" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAny">
            <add input="{HTTP_HOST}" pattern="^www.my-domain.com$" negate="true" />
        </conditions>
        <action type="Redirect" url="http://www.my-domain.com/{R:0}" />
    </rule>
</rules>

我认为它现在正在生效,因为my-domain.com(带有www前缀)和strange-domain.com(也没有带有wwww)的请求现在都得到以下错误:

enter image description here
你能给我任何其他想法吗?谢谢 !

1 回答

  • 1

    在您的情况下,最好使用IIS URL重写,而不是MVC3中的任何内容,因为IIS中的URL重写引擎在它们到达ASP.NET之前处理请求 .

    静态资产(如图像,javascript文件和样式表)可能无法始终在ASP.NET中提供,并且ASP.NET中的任何URL重定向都不起作用 .

    要全局重定向与所需服务器URL不匹配的所有请求,请参阅this link

    基本上,您要配置 condition ,其中 does not 匹配模式^ www.my-domain.com $

    结果的配置应如下所示:

    <rewrite>
        <rules>
            <rule name="Redirects to www.my-domain.com" patternSyntax="ECMAScript" stopProcessing="true">
                <match url=".*" />
                <conditions logicalGrouping="MatchAny">
                    <add input="{HTTP_HOST}" pattern="^www.mydomain.com$" negate="true" />
                </conditions>
                <action type="Redirect" url="http://www.my-domain.com/{R:0}" />
            </rule>
        </rules>
    </rewrite>
    

    另外

    当您说其他域可以访问您网站的所有区域(包括您的管理区域)时,您肯定意味着他们只能看到授权页面,而不是他们绕过您的授权 - 在这种情况下您需要认真审视您的安全性 .

    实质上,您无法阻止某人将域指向您的IP地址,因此您需要考虑应用程序如何处理该域 .

相关问题