在做网站的时候为了让网页地址友好一点经常需要使用到 URL 重写,比如 https://www.baidu.com/a?b=1&c=2 这样的地址就不是很友好,也不方便记忆,如果是 https://www.baidu.com/a/1/2 这样的地址就比较好记了,那么在 IIS 下如何实现这种功能呢?IIS 默认是没有安装 URL 重写工具的,所以必须要自己下载安装。

URL Rewrite 模块的优点就是不需要在项目中做任何操作就可以实现重写,这样我们就不需要对原有的项目代码进行调整了。

ASP.NET 网站实现伪静态需要以下条件: 

1、IIS 7.0(目前 Url Rewrite Module 仅支持 IIS 7 以上的版本); 
2、Url Rewrite Module

官方地址:URL Rewrite 下载

1、安装 Url Rewrite Module

从官网选择对应的版本下载好后安装到服务器上。

ASP.NET 使用 IIS URL Rewrite 模块实现伪静态

官方有中文版的安装包所以我下载了简体中文的安装包。

ASP.NET 使用 IIS URL Rewrite 模块实现伪静态

安装完成后,在 IIS 的管理界面会多出来 URL 重写模块。

ASP.NET 使用 IIS URL Rewrite 模块实现伪静态

2、配置 URL Rewrite

进入 URL 重写模块后点击『添加规则』。

ASP.NET 使用 IIS URL Rewrite 模块实现伪静态

新建一个入站的空白规则,输入如下内容。

ASP.NET 使用 IIS URL Rewrite 模块实现伪静态

URL Rewrite 模块也提供了测试功能,点击『测试模式』即可重写规则的测试正则表达式是否正确。

ASP.NET 使用 IIS URL Rewrite 模块实现伪静态

配置好以后会在 web.config 文件的 system.webServer 节点下多出如下内容:

<rewrite>
  <rules>
    <rule name="Rewrite to article.aspx">
      <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
      <action type="Rewrite" url="article.aspx?id={R:1}&title={R:2}" />
    </rule>
  </rules>
</rewrite>

 3、测试重写规则

 要测试规则是否正确重写 URL,打开 Web 浏览器并请求以下 URL:

http://localhost/article/234/hello

如果请求成功了证明重写生效了。

4、其他功能

URL Rewrite 模块还提供了很多高级的功能,比如忽略某些 URL 请求、定义出站规则等等,大家可以查看官方给出的实例进行使用。

官方文档:https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-video-walkthrough

相关文章: