1

我有一个托管在 godaddy(豪华 4GH 计划)上的 .net mvc3 网站,带有 SSL 和专用 IP 地址(173.201。。最近,我注意到有一个奇怪的域(比如说 www.strange-domain.com )也指向我的专用IP地址(173.201.. )。也就是说,除了我自己的域(比如,www.my-domain.com),这个新的奇怪域还可以访问我的站点(我的应用程序)的每个部分,包括管理区!我真的不希望发生这种事情,因为就 SEO 而言,搜索引擎可能会认为两个域指向同一个站点是一种作弊。

所以我联系了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 驱动的,如果 url 重写不起作用,我想知道我是否可以使用一些 .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 前缀)和奇怪的 domain.com(也没有 wwww)的请求现在都出现以下错误:

在此处输入图像描述 你能给我其他的想法吗?谢谢你 !

4

1 回答 1

1

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

静态资产,如图像、javascript 文件和样式表,可能并不总是在 ASP.NET 中提供,并且 ASP.NET 中的任何 URL 重定向都不起作用。

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

本质上,您想配置一个条件,其中 {HTTP_HOST}匹配模式 ^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 地址,因此您需要考虑您的应用程序如何处理它。

于 2012-10-30T04:10:19.320 回答