用户友好 URL - 规则模板

作者:IIS 团队

规则模板用于提供一种简单的方法来为特定方案创建一个或多个重写规则。 URL 重写模块包含多个规则模板,它们用于一些常见使用方案。 此外,URL 重写模块 UI 还提供了一个用于插入自定义规则模板的框架。 本演练将指导你如何使用 URL 重写模块附带的“用户友好 URL”规则模板。

先决条件

本演练要求满足以下先决条件:

  1. 启用了 ASP.NET 角色服务的 IIS 7.0 或更高版本;
  2. 已安装 URL 重写模块 2.0 版本。

设置测试网页

我们将使用一个简单的测试 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>
            <tr>
                <td>Public Link: </td>
                <td><a href="<%= Request.ServerVariables["SCRIPT_NAME"] %>?<%= Request.ServerVariables["QUERY_STRING"] %>">Link URL</a></td>
            </tr>
        </table>
    </body>
</html>

复制此文件后,浏览到 http://localhost/article.aspx 并检查系统是否已在浏览器中正确呈现页面。
Screenshot of a browser screen displaying the U R L Rewrite Module Test Page.

使用规则模板生成重写规则

用户友好 URL - 此规则模板可用于生成重写、重定向和出站规则,使动态 Web 应用程序的 URL 对用户和搜索引擎更加友好。 通常,动态网页在生成输出 HTML 时会考虑查询字符串参数。 带有查询字符串的 URL(例如 http://contoso.com/articles.aspx?year=2008&month=11)不像基于简单层次结构的 URL(例如 http://contolso.com/articles/2008/11)那样易于使用和传递。 此外,某些搜索引擎爬网程序在对网站页面建立索引时可能会忽略查询字符串。 此规则模板可帮助你生成重写规则,将基于层次结构的 URL 转换为使用查询字符串的 URL。 该模板还可根据需要生成一个重定向规则,该规则可用于将 Web 客户端从使用查询字符串的 URL 重定向到干净 URL。 最后,可以创建一个出站重写规则,用于将 HTML 响应中出现的所有带查询字符串的 URL 替换为基于层次结构的 URL 等效项。

若要使用此模板,请执行以下步骤:

  1. 转到 IIS 管理器
  2. 选择“默认网站”
  3. 在功能视图中,单击“URL 重写”
    Screenshot of the I I S Manager window on the Default Website screen. The icon for U R L Rewrite is highlighted.
  4. 在右侧的“操作”窗格中单击“添加规则...”,然后选择“用户友好 URL”模板
    Screenshot of the Add Rules dialog box. The icon for User-friendly U R L is highlighted.
  5. 在“添加规则以启用用户友好的 URL”对话框中,输入带查询字符串参数的 URL 示例:http://localhost/article.aspx?id=123&title=some-title,然后展开下拉列表,其中包含有关如何将该示例 URL 转换为不带查询字符串的 URL 的建议选项。
    Screenshot of the Add Rules to Enable User-Friendly U R L dialog box.
  6. 选择第二个选项:http://localhost/article/123/some-title。 请注意,URL 模式和替换 URL 已相应地更新。 这些设置将在规则模板创建的重写规则中使用。 选中“创建相应的重定向规则”,以创建当 Web 客户端使用内部 URL 请求网页时要使用的重定向规则。 这些客户端将重定向到相应的公共 URL。
    另外,选中“创建相应的出站重写规则”以创建一个出站规则,该规则将响应 HTML 中内部 URL 的所有实例替换为公共等效项。
    Screenshot of the Add Rules to Enable User-Friendly U R L dialog box. The corresponding public U R L field is highlighted.
  7. 单击“确定”,以便生成重写、重定向和出站规则:
    Screenshot of the I I S Manager Window displaying the U R L Rewrite page. The inbound and outbound rules are shown.

测试规则

若要测试生成的规则,请打开 Web 浏览器并请求以下 URL:

http://localhost/article/234/some-title

应会看到 Web 服务器上的重写规则已将原始 URL 更改为 article.aspx,并且已将“234”和“some-title”作为查询字符串参数值传递。

在 Web 浏览器中,将鼠标移到其他“链接 URL”文本上(或使用菜单“页面”->“查看源代码...”)。 请注意,即使链接的 URL 最初采用的格式使用查询字符串参数,但它现在已被 URL 重写模块替换为使用基于层次结构的 URL 格式。

Screenshot of a browser window displaying the U R L Rewrite Module Test Page. The redirected U R L is circled.

此外,如果请求 http://localhost/article.aspx?id=432&title=some-other-title,你将看到浏览器会重定向到 http://localhost/article/432/some-other-title

总结

在本演练中,你已了解如何使用 URL 重写模块中包含的“用户友好 URL”规则模板生成重写规则。 可将此规则模板用作重写规则的设计起点,以便为现有 Web 应用程序启用用户友好和搜索引擎友好的 URL。