使用重写映射的规则 - 规则模板
规则模板用于提供一种简单的方法来为特定方案创建一个或多个重写规则。 URL 重写模块包含多个规则模板,它们用于一些常见使用方案。 此外,URL 重写模块 UI 还提供了一个用于插入自定义规则模板的框架。 本演练将指导你如何使用 URL 重写模块附带的“使用重写映射的规则”模板。
先决条件
本演练要求满足以下先决条件:
- 启用了 ASP.NET 角色服务的 IIS 7.0 或更高版本;
- 已安装 URL 重写模块 Go Live 版本。
设置测试网页
我们将使用一个简单的测试 asp.net 页面来验证模板创建的规则是否正常工作。 测试页面只会读取 Web 服务器变量并在浏览器中输出其值。
复制以下 ASP.NET 代码,并将其放入名为“article.aspx”的文件中的 %SystemDrive%\inetpub\wwwroot\
文件夹中:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module Test</title>
</head>
<body>
<h1>URL Rewrite Module Test Page</h1>
<table>
<tr>
<th>Server Variable</th>
<th>Value</th>
</tr>
<tr>
<td>Original URL: </td>
<td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
</tr>
<tr>
<td>Final URL: </td>
<td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
</tr>
</table>
</body>
</html>
复制此文件后,浏览到 http://localhost/article.aspx
并检查系统是否已在浏览器中正确呈现页面。
使用规则模板生成重写规则
“使用重写映射的规则”模板可用于生成重写和重定向规则,这些规则使用重写映射在最初请求的 URL 和已重写或重定向 URL 之间存储静态映射。 有关重写映射用法的详细信息,请查看“URL 重写模块配置参考”和“在 URL 重写模块中使用重写映射”。
若要使用此模板,请执行以下步骤:
转到 IIS 管理器
选择“默认网站”
在“添加使用重写映射的规则”对话框中,从下拉列表中选择“重写”。 在“选择重写映射:”组合框中,将新重写映射的名称指定为 StaticRewrites。
单击“确定”。 这会创建具有给定名称的重写映射,以及一个引用该重写映射的名为“StaticRewrites 的重写规则 1”的重写规则。
单击“确定”后,你将转到可为重写映射指定映射条目的页面。 单击右侧“操作”窗格中的“添加映射条目...”,然后分别输入映射条目的原始值以及新值“/article1”和“/article.aspx?id=1&title=some-title”。
重复上一步骤以添加另外两个映射条目,如下所示:
原始值: 新值: /some-title /article.aspx?id=1&title=some-title /post/some-title.html /article.aspx?id=1&title=some-title
完成这些步骤后,你应会看到在 C:\inetpub\wwwroot\web.config
文件中创建了以下重写映射和重写规则。
<rewrite>
<rewriteMaps>
<rewriteMap name="StaticRewrites">
<add key="/article1" value="/article.aspx?id=1&title=some-title" />
<add key="/some-title" value="/article.aspx?id=1&title=some-title" />
<add key="/post/some-title.html" value="/article.aspx?id=1&title=some-title" />
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Rewrite Rule 1 for StaticRewrites" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Rewrite" url="{C:1}" appendQueryString="False"/>
</rule>
</rules>
</rewrite>
测试规则
若要测试生成的、使用“StaticRewrites”映射的重写规则,请打开 Web 浏览器并请求以下任意 URL:
http://localhost/article1
http://localhost/some-title
http://localhost/post/some-title.html
上述任何一个 URL 都应该导致 URL 根据重写映射中定义的映射进行重写。 结果应如下所示:
总结
在本演练中,你已了解如何使用 URL 重写模块中包含的“使用重写映射的规则”模板,来生成使用重写映射的重写规则。 此规则模板可用于创建规则和占位符映射,其中可以包含 Web 应用程序的大量静态重写和重定向映射。