我有一个.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)的请求现在都得到以下错误:
你能给我任何其他想法吗?谢谢 !
1 回答
在您的情况下,最好使用IIS URL重写,而不是MVC3中的任何内容,因为IIS中的URL重写引擎在它们到达ASP.NET之前处理请求 .
静态资产(如图像,javascript文件和样式表)可能无法始终在ASP.NET中提供,并且ASP.NET中的任何URL重定向都不起作用 .
要全局重定向与所需服务器URL不匹配的所有请求,请参阅this link
基本上,您要配置 condition ,其中 does not 匹配模式^ www.my-domain.com $
结果的配置应如下所示:
另外
当您说其他域可以访问您网站的所有区域(包括您的管理区域)时,您肯定意味着他们只能看到授权页面,而不是他们绕过您的授权 - 在这种情况下您需要认真审视您的安全性 .
实质上,您无法阻止某人将域指向您的IP地址,因此您需要考虑应用程序如何处理该域 .