簡易的 Url Rewriting 隱藏 Querystring (三) 隱藏副檔名
上篇【簡易的 Url Rewriting 隱藏 Querystring (二) IIS 注意事項】文章,裡面講解如何設定 IIS 使得也讓副檔名【.html】得以支援 Url Rewriting 的功能。那應該有人會問類似的問題:
(1) 如果 Rewrite 的副檔名有五、六種,那豈不是要新增設定五、六次?如果有幾十種副檔名,那不是會讓人傻眼嗎?
(2) 如果我連副檔名也想要隱藏,該怎麼做呢?
噗!幸好,下面的方法可以一次滿足上面的問題,各位看倌待我慢慢說來。還是一樣,我們必須在 IIS 上面增加設定,首先打開【應用程式副檔名設定】頁面,按下【新增】按鈕:
在【應用程式設定】視窗中,點擊【新增】按鈕:
- 執行檔案,利用【瀏覽】按鈕填入【C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll】
- 副檔名,填入【 .* 】
- 指令動詞,限制於填入【GET,HEAD,POST,DEBUG】
- 勾選【指令碼引擎】
- 取消勾選【檢查該檔案是否存在】
- 按下【確定】按鈕即可
這時,我們來修改 Web.Config 檔案,例如:
(1) 改成支援副檔名 .php5
<rewriter>
<rewrite url="~/Books/(\d+)/Default.php5" to="~/Books.aspx?bookID=$1"/>
</rewriter>
果然就可以支援 php5 副檔名囉:
(2) 改成支援副檔名 .pl
<rewriter>
<rewrite url="~/Books/(\d+)/Default.pl" to="~/Books.aspx?bookID=$1"/>
</rewriter>
也可以支援 pl 的副檔名囉:
(3) 改成支援任意副檔名:
<rewriter>
<rewrite url="~/Books/(\d+)/Default.(.*)" to="~/Books.aspx?bookID=$1"/>
</rewriter>
隨便一個副檔名,連 DotBlogs 也可以囉:
(4) 隱藏副檔名:
<rewriter>
<rewrite url="~/Books/(\d+)/?(.*)" to="~/Books.aspx?bookID=$1"/>
</rewriter>
嘿嘿!是不是很好玩呢?這樣可能別人就猜不到我們的開發環境了。
IIS 6 設定補充說明:
如果妳想使用【隱藏副檔名】功能,可能會遇到 .* 副檔名無法輸入的情況。(有些機器會發生,有時不會。)
這時,可用以下做法解決:
(1) 在應用程式程式設定中,按下【插入】
(2) 執行檔路徑輸入: 【C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll】
(3) 取消勾選【確認該檔案是否存在】,並按下確定,就可完成設定。