学习IIS URL重写

最近将博客从PJBlog转移到WordPress,很多原来的链接地址访问不了,需要重写或重定向URL。我购买的虚拟主机是IIS 7.5服务器,能很好地支持URL重写。当然,对于老手,可以直接在Web.config的system.webServer/rewrite节中添加URL重写规则即可。而对于初学者或是在测试阶段,最好利用IIS URL重写模板完成。

首先你要在本地安装IIS URL重写模块,请到http://www.iis.net/downloads/microsoft/url-rewrite下载并安装相应语言的程序。安装后可以直接通过IIS7撰写规则,会自动保存到目录下的Web.config配置文件。不管你的站点是.net写的还是php写的,都能使用!因为这个模块是属于IIS的,而不是属于.net的。

打开IIS 7.5,选择一个网站,你会网站主页看到多出了一个URL重写的图标。点击进入URL重写图形界面。如图:

URL重写

1. 添加规则。在右侧操作区点击添加规则…规范域名,输入主要主机名,如localhost/wordpress。如图:

添加规则重定向到规范域名

system.webServer/rewrite节中自动添加了一个规则配置:

 <rule name="CanonicalHostNameRule1">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^www\.riafan\.com$" negate="true" />
  </conditions>
  <action type="Redirect" url="http://www.riafan.com/{R:1}" />
</rule>

当然了,还可以使用空白规则具有重写重写映射的规则用户友好URL等模板来添加规则。其中 空白规则模板最灵活、而具有重写重写映射的规则模板一般在使用其它模式难以实现时才使用,此处不详述了。

现在的问题是只要请求不是localhost/wordpress开始结束的URL都会重定向到http://localhost/wordpress,包括bbs.riafan.com也会重定向到 http://localhost/wordpress,这并不是我们想要的,得修改入站规则。

2. 修改规则。在入站规则网格中双击刚才新建的规则,打开编辑入站规则界面。将检查输入字符串是否:修改为与模式匹配,将模式(T):修改为^riafan.com$。如图:

编辑条件

在右侧操作区点击应用按钮完成编辑。system.webServer/rewrite节中相应规则修改为:

<rule name="CanonicalHostNameRule1" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^riafan.com$" />
  </conditions>
  <action type="Redirect" url="http://www.riafan.com/{R:1}" />
</rule>

在右侧操作区点击相应按钮还可以重命名、删除、禁用、排序和导入规则,很方便。

相关资源:

1. http://technet.microsoft.com/zh-cn/library/ee215194
2. http://www.iis.net/learn/extensions/url-rewrite-module

发表评论