前段时间由于更换服务器遇到一个很严重的问题,windows server 2012中的IIS8.5,无法实现将不带www的顶级域名,301重定向到带www的二级域名中(就是二级域名301到顶级域名),造成IIS出现递归重定向并且网站打不开和报错。本文记录了这个问题的解决方法和相关详情。
比如当前的网站是shiyousan.com,想要将www.shiyousan.com这个域名301重定向到shiyousan.com,如果使用IIS的重定向功能,就会出现很严重的问题。
如上图所示,我们把带3w的二级域名向不带3w的顶级域名做301永久重定向,结果就会导致二级域名无法打开,路径地址就会重复的递归请求,导致出现URL长度超长的错误:
虽然带www的域名是二级域名,但是现在基本大部分的网站依然使用带www的域名作为主域名,而不是不带3w的域名作为主域名,这里就不深究具体的原因,感兴趣的朋友可以网上找下资料。由于不带www的域名作为所有域名的顶级域名,所有的二级域名是基于顶级域名,所以当二级域名做301跳转到顶级域名时,基于IIS的机制和各种原因无法实现重定向的功能(这里的原因只是猜测,没有认真的去研究^^)。
解决方法:
要想实现不带3W的顶级域名做301重定向到带3W的域名中,就需要使用IIS的URL重写模块,而不是使用重定向功能。关于IIS的URL重写,是需要安装URL Rewrite这个插件的,下载地址如下:http://www.iis.net/downloads/microsoft/url-rewrite。添加URL重写后,就可以实现二级域名向顶级域名做301重定向了。
具体的操作可以参考这些文章:
- IIS8如何安装和使用URL重写模块-URL Rewrite
- ASP.NET MVC如何实现带www域名重定向到不带www顶级域名
- 编辑入站的规则页
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98669.html