VPS IIS下用IIRF设置301重定向

需求

笔者一个站点的带WWW和不带WWW的一个站点,把 bohuiz.com 301指向带www.bohuiz.com

目前知道的方式

IIS目前大概有三种设置重定向的方式:

  • 建两个站点,一个主机头是bohuiz.com,另一个主机头是www.bohuiz.com,把bohuiz.com的网站右击——属性——主目录——勾选重新向到,填写:http://www.bohuiz.com,然后把“资源的永久重定向”勾上,如下图:
    QQ截图20140731153827
    保存重启IIS就可以了,如果出现网址重定向后的eurl.axd=一串字符,把两个网站的.net版本设为同一个(网上还有的解决方法是:选.net 1.0或者.net 2.0,但是有些功能是.net 4.0或者4.5的时候就不行了)     还可以请参照后面修改注册表的方法
  • 通过web.config的方法,有一定的局限性
  • 通过ISAPI的方法(本文的重点)

ISAPI的方法

这个ISAPI重定向的插件不止一种,这边介绍IIRF插件,下载地址:http://iirf.codeplex.com/releases/view/14394

这边我下载了2.0.1.15版本,最新版的在我的VPS测试失败,安装好以后打不开网站了

  1. 解开“2.0.1.15”压缩包,取出bin文件夹中的”IIRF.dll”(这边索性bin下的所有文件),上传服务器c:\IIRF文件夹下 (IIRF为新建的文件夹,当然放在其它文件夹下也成)
  2. 对IIRF文件夹添加“IIS_XXXX”(读取/运行,读取,写)权限,官网上说还要添加“NETWORK SERVICE”的相关权限,我测试没加,依然工作正常。
  3. 在IIS6中无论是全局还是在单个网站中,右键->属性->“ISAPI筛选器”中加载”IIRF.dll”,都可正常工作。具体加载方法和ISAPI_Rewrite一样,完后重启IIS,再点开看看,显示绿箭头即可(需要稍等才会生效)。
  4. 在网站根目录下创建”IIRF.ini”文件,并对该文件添加“IIS_XXXX”(读取/运行,读取)权限(否则不能工作,切记!)。具体该文件中的规则如果改写,原压缩包中给出非常详细的例子,参照一下。值得称赞的事,每次修改该ini文件都无需重启IIS
  5. 我这边的重定向代码是
    RewriteLog c:\logs\iirf
    RewriteLogLevel 1
    IterationLimit 10
    MaxMatchCount 10
    RewriteEngine ON
    StatusInquiry ON
    RewriteCond %{HTTP_HOST} ^(bohuiz\.com).*$ [I]
    RedirectRule ^/(.*)$ http://www.bohuiz.com/$1 [I,R=301]
  6. 这是除了首页以外的页面可能都重定向成功了,如果输入bohuiz.com出现前面所说的重定向地址为http://www.bohuiz.com/eurl.axd=q123123123123142124的情况。那么打开注册表找到“HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\ASP.NET\\4.0.30319.0”,添加键值名为“EnableExtensionlessUrls” 类型为“DWORD”的键值,并设置值为“0”。然后在cmd中运行“IISRESET”,重启IIS以读取注册表修改后的内容。注:此项修改就是关闭ASP.NET 4‎.0对无扩展URL的处理,若将此项键值设为“1”则开启

检查效果

打开站长工具检测

QQ截图20140731155627

有兴趣的可以检查下http://www.bohuiz.com

参与评论

游客评论不支持回复他人评论内容,如需回复他人评论内容请