簡易的 Url Rewriting 隱藏 Querystring (二) IIS 注意事項

簡易的 Url Rewriting 隱藏 Querystring (二) IIS 注意事項

在上一次介紹【簡易的 Url Rewriting 隱藏 Querystring】文章中,介紹如何使用 來隱藏 QueryString,如果有試著嘗試 Url Rewriting 或是眼尖的網友,會可能會發現我沒有對 IIS 另外做一些設定。

其實,在 IIS 中我少了在【應用程式設定】設定【應用程式副檔名設定】。少了這一項設定,就會發生一些情況,

UrlRewriting-0000 UrlRewriting-0001

例如:

<rewriter>
  <rewrite url="~/Books/(\d+)/Default.html" to="~/Books.aspx?bookID=$1"/>
</rewriter>

 

以上面這段語法來說,表示如果程式將頁面導向 http://localhost/TestSite35/Books/456/Default.html 的網址,其實真正執行頁面得程式是在 http://localhost/TestSite35/Books.aspx?bookID=456 。可是,當我們程式去執行時卻不如我們所預期,會出現以下錯誤畫面:

UrlRewriting-0002 

這是因為 IIS 不知道 .html 副檔名的頁面,其實是 ASP.Net 2.0 要去處理的頁面,何況我們根本也沒有 Default.html 這個頁面,當然會發生問題。


以下開始講解如何設定 IIS 設定

以 Windows XP Professional 版本 IIS 5.1 版本來說明。打開 IIS 管理員,然後在虛擬目錄上按下滑鼠右鍵,並選擇【內容】

UrlRewriting-0003

然後在【虛擬目錄】Tab 頁面,點擊【應用程式設定】【設定】按鈕,然後會出現【應用程式設定】視窗。

UrlRewriting-0000 UrlRewriting-0001


Windows Server 2003 Professional 版本以上, IIS 6.0 環境設定,打開 IIS 管理員,然後在欲設定的網站上按下滑鼠右鍵,並選擇【內容】

UrlRewriting-0006

然後在【主目錄】Tab 頁面,點擊【應用程式設定值】【設定】按鈕,然後會出現【應用程式設定】視窗。

UrlRewriting-0007 UrlRewriting-0008


【應用程式設定】視窗中,點擊【新增】按鈕,然後增加對【.html】檔案的處理對應:

  1. 執行檔案,利用【瀏覽】按鈕填入【C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
  2. 副檔名,填入【.html】
  3. 指令動詞,限制於填入【GET,HEAD,POST,DEBUG
  4. 勾選【指令碼引擎】
  5. 取消勾選【檢查該檔案是否存在】
  6. 按下【確定】按鈕即可

UrlRewriting-0004

這時,我們重新執行我們的頁面,Url Rewriting 的功能又出現了:

UrlRewriting-0005