IIS URL 重写

Flying
2014-02-05 / 0 评论 / 145 阅读 / 正在检测是否收录...

最近将博客从 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 重写

添加规则

在右侧操作>区点击添加规则...>〉规范域名>,输入主要主机名,如 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,这并不是我们想要的,得修改入站规则。

修改规则

在入站规则网格中双击刚才新建的规则,打开编辑入站规则>界面。将检查输入字符串是否 :>修改为与模式匹配>,将模式(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
8

评论 (0)

取消