URL Rewrite Module 2.1 URL重写模块规则写法
目录先决条件设置测试网页创建重写规则命名规则定义模式定义动作查看配置文件中的重写规则测试重写规则创建重定向规则测试重定向规则创建访问阻止规则测试访问阻止规则概要
先决条件
本演练需要满足以下先决条件:
IIS安装 URL Rewrite Module 2.1
短地址http://iis.net/extensions/URLRewrite
下载页面
https://iis.net/downloads/microsoft/url-rewrite#additionalDownloads
下载链接
https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi
https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_zh-CN.msi
启用了ASP.NET角色服务的IIS 7或更高版本。 URL重写模块已安装。有关更多信息,请参见使用URL重写模块。
设置测试网页
为了演示URL重写模块如何工作,我们将使用一个简单的测试ASP.NET页面。该页面读取Web服务器变量,并在浏览器中输出它们的值。
复制以下ASP.NET代码,并将其放在名为article.aspx的文件的%SystemDrive%\ inetpub \ wwwroot \文件夹中:
<%@ Page Language="C#" %>
URL Rewrite Module Test Page
Server Variable | Value |
---|---|
Original URL: | <%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %> |
Final URL: | <%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %> |
复制此文件后,浏览http://localhost/article.aspx并检查页面是否在浏览器中正确呈现。
创建重写规则
我们将创建一个简单的重写规则,该规则将使用以下格式重写URL:
http://localhost/article/342/some-article-title 至: http://localhost/article.aspx?id=342&title=some-article-title。
我们将使用IIS管理器中的URL重写UI创建一个重写规则。为此,请按照下列步骤操作:
1、转到IIS管理器。
2、选择默认网站。
3、在“功能视图”中,单击“ URL重写”。
4、在右侧的“操作”窗格中,单击“添加规则…”。
5、在“添加规则”对话框中,选择“空白规则”,然后单击“确定”。
现在,您必须定义实际的重写规则。在URL重写模块中,通过指定四项必需的信息来定义重写规则:
规则名称。 用于匹配URL字符串的模式。 可选的一组条件。 匹配模式并执行所有条件检查是否成功时要执行的操作。
命名规则
在“名称”文本框中,输入将唯一标识该规则的名称,例如:“重写为article.aspx”。
定义模式
在模式文本框中,输入以下字符串:
^article/([0-9]+)/([_0-9a-z-]+)
此字符串是一个正则表达式,它指定该模式将与满足以下条件的任何URL字符串匹配:
以字符“ article /”的序列开头。 在第一个“ /”之后包含一个或多个数字字符。 在第二个“ /”之后包含一个或多个字母数字或“ _”或“-”字符。
请注意,正则表达式的某些部分在括号内。这些括号创建捕获组,以后可以通过使用反向引用在规则中对其进行引用。
定义动作
由于我们要创建的规则应该重写URL,因此请选择“操作”组框中列出的“重写操作”类型。在“重写URL:”文本框中,输入以下字符串:
article.aspx?id={R:1}&title={R:2}
此字符串指定应将输入URL重写为的新值。请注意,对于查询字符串参数的值,我们使用了{R:1}和{R:2},它们是对使用括号在规则模式中定义的捕获组的反向引用。
保留所有其他设置的默认值。“编辑入站规则”属性页面应类似于以下页面:
通过单击右侧的“应用”来保存规则。
查看配置文件中的重写规则
重写规则存储在ApplicationHost.config文件或Web.config文件中。要检查我们刚刚创建的规则的配置,请打开%SystemDrive%\ inetpub \ wwwroot中的Web.config文件。在此文件中,您应该看到
上面的元素表示该规则将匹配任何URL字符串。
上面的元素为规则添加了一个条件,该条件通过读取服务器变量HTTP_HOST来检索主机头值,并将其与模式“ localhost”进行匹配,然后取反结果。换句话说,该条件验证主机头与“ localhost”不匹配。
上面的元素告诉URL重写模块结束HTTP请求。
测试访问阻止规则
要测试此规则,请打开Web浏览器并向发出请求http://127.0.0.1/article/234/some-title。您应该看到的是没有从服务器收到任何响应的浏览器。但是,如果您请求http://localhost/article/234/some-title,则Web服务器将成功响应。
失败的显示如下:
成功显示如下:
概要
在本演练中,您学习了如何通过使用IIS管理器或手动编辑Web.config文件来配置URL重写规则。在本演练中创建的规则演示了URL重写模块的一些重要功能,例如正则表达式支持以及使用HTTP标头和服务器变量进行重写决策的能力。
发表评论
暂时没有评论,来抢沙发吧~