簡易的 Url Rewriting 隱藏 Querystring (三) 隱藏副檔名

簡易的 Url Rewriting 隱藏 Querystring (三) 隱藏副檔名

上篇【簡易的 Url Rewriting 隱藏 Querystring (二) IIS 注意事項】文章,裡面講解如何設定 IIS 使得也讓副檔名【.html】得以支援 Url Rewriting 的功能。那應該有人會問類似的問題:

(1) 如果 Rewrite 的副檔名有五、六種,那豈不是要新增設定五、六次?如果有幾十種副檔名,那不是會讓人傻眼嗎?

(2) 如果我連副檔名也想要隱藏,該怎麼做呢?

噗!幸好,下面的方法可以一次滿足上面的問題,各位看倌待我慢慢說來。還是一樣,我們必須在 IIS 上面增加設定,首先打開【應用程式副檔名設定】頁面,按下【新增】按鈕:

HideExtension-0000

【應用程式設定】視窗中,點擊【新增】按鈕:

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

HideExtension-0001

這時,我們來修改 Web.Config 檔案,例如:

(1) 改成支援副檔名 .php5

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

果然就可以支援 php5 副檔名囉:

HideExtension-0002

(2) 改成支援副檔名 .pl

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

也可以支援 pl 的副檔名囉:

HideExtension-0003

(3) 改成支援任意副檔名

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

隨便一個副檔名,連 DotBlogs 也可以囉:

HideExtension-0004

(4) 隱藏副檔名

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

HideExtension-0005

嘿嘿!是不是很好玩呢?這樣可能別人就猜不到我們的開發環境了。


IIS 6 設定補充說明:

如果妳想使用【隱藏副檔名】功能,可能會遇到 .* 副檔名無法輸入的情況。(有些機器會發生,有時不會。)

這時,可用以下做法解決:

(1) 在應用程式程式設定中,按下【插入

(2) 執行檔路徑輸入: 【C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

(3) 取消勾選【確認該檔案是否存在】,並按下確定,就可完成設定。

0

1