使用重寫對應的規則 - 規則範本
作者: Ruslan Yakushev
規則範本可用來為特定案例提供建立一或多個重寫規則的簡單方式。 URL 重寫器模組包含一些常見使用案例的規則範本。 除了該 URL 重寫模組 UI 之外,還提供插入自定義規則範本的架構。 本逐步解說將引導您瞭解如何使用URL重寫模組隨附的「規則與重寫對應」範本。
必要條件
本逐步解說需要下列必要條件:
- 已啟用 ASP.NET 角色服務的 IIS 7.0 或更新版本;
- 已安裝 URL 重寫模組 Go Live 版本。
設定測試網頁
我們將使用簡單的測試 asp.net 頁面來確認範本所建立的規則正常運作。 測試頁面只會讀取網頁伺服器變數,並在瀏覽器中輸出其值。
複製下列 ASP.NET 程式代碼,並將它 %SystemDrive%\inetpub\wwwroot\
放在名為 article.aspx 的檔案資料夾中:
<%@ 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 之間的靜態對應。 For more information about usage of rewrite maps refer to "URL Rewrite Module Configuration Reference" and "Using Rewrite Maps in URL Rewrite Module".
若要使用此範本,請遵循下列步驟:
移至 IIS 管理員
選取 [預設網站]
在 [使用重寫對應新增規則] 對話框中,選擇下拉式清單中的 [重寫]。 在 [選擇重寫對應:] 下拉式方塊中,將新的重寫對應名稱指定為 StaticRewrites。
按一下 [確定]。 這會建立具有指定名稱的重寫對應,以及名稱為 「Rewrite Rule 1 for StaticRewrites」 的重寫規則,以參考該重寫對應。
按兩下 [確定] 之後,系統會將您帶至頁面,您可以在其中指定重寫對應的對應專案。 按兩下 [新增對應專案...]在右側的 [動作] 窗格中,分別輸入對應專案的原始和新值,分別輸入為 “/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」 對應產生的重寫規則,請開啟網頁瀏覽器並要求下列任何 URL:
http://localhost/article1
http://localhost/some-title
http://localhost/post/some-title.html
上述任何一個 URL 都應該根據重寫對應中定義的對應來重寫 URL。 您的結果看起來應該像下列頁面:
摘要
在本逐步解說中,您已瞭解如何使用URL重寫模組隨附的「規則與重寫對應」範本,以重寫對應產生重寫規則。 此規則範本可用來建立規則和佔位元對應,其中包含 Web 應用程式的大量靜態重寫和重新導向對應。