天天看點

IIS伺服器下如何支援url重寫

作者:艾西0FF0

IIS伺服器下如何支援url重寫

URL REWRITE,翻譯過來就是URL重寫,或者URL重定義。在asp+iis的網站開發模式中,可以實作如将http://xxxxxx.cn/news.asp?id=220 變成http://xxxxxx.cn/220.html 的形式。例如某條新聞的實際網址是http://xxxxxx.cn/news.asp?id=220 ,通過URL重寫之後,我們就可以直接輸入 http://xxxxxx.cn/220.html 的網址,來通路這條新聞

對于iis伺服器,要實作此項功能,需從 http://www.helicontech.com/download/ 網站上,下載下傳Lite Version (free)免費版的軟體,将此軟體安裝于伺服器之後,在其安裝目錄上,找到配置檔案httpd.ini,用記事本打開,輸入相應的規則。然後,在相應的站點上,ISAPI中,添加此元件,配置完成,功能生效。

URL_REWRITE的規則寫法參考:

當我需要将news.asp?id=234映射成news/234.html時,隻需設定:

RewriteRule /news/(\d+)\.html /news\.asp\?id=$1 [N,I]

這樣就把 /news/234.html 這樣的請求映射成了 /news.asp?id=234

當有對/news/234.html的請求時:web伺服器會把實際請求轉發給/news.asp?id=234

安裝URL重寫元件REwrite.dll,如果你的IIS伺服器已經加載過了,就沒有必要重新加載,如果沒有得話,必須下載下傳REwrite.dll元件,下載下傳位址如下:

http://www.dllzj.com/Rewrite.dll/

如何安裝RUL重寫元件,把下載下傳來的壓縮包解壓,放到IIS所安裝的路徑下,友善管理,放到其他地方也可以

打開IIS,右鍵“網站”-->"屬性"-->“ISAPI篩選器”,添加選擇Rewrite.dll所在的路徑。篩選器名稱為:Rewrite。确定重寫啟動IIS。

比對于某一個簡單應用可以是:

RewriteRule /news/(\d+)\.html /news/news\.php\?id=$1 [N,I]

這樣就把 http://www.xxxxxx.com/news/234.html

映射到了 http://www.xxxxxx.com/news/news.php?id=234

一個更通用的能夠将所有的動态頁面進行參數映射的表達式是:

把 http://www.xxxxxx.cn/foo.php?a=A&b=B&c=C

表現成 http://www.xxxxxx.cn/foo.php/a/A/b/B/c/C

RewriteRule (.*?\.php)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? $1(?2$2&:\?)$3=$4?5$5: [N,I]

使用URL重寫功能的好處:

首先,有助于增加網站的安全性,因為它隐藏了諸如asp php jsp等相關的伺服器技術,以最原始的html檔案形式,呈現于客戶。

其次,在平台移植時,不會影響各頁面的浏覽。如将news.asp?id=123轉移news.php?id=123,即将asp平台轉移php,如使用此URL重寫,這個頁面的網址就是news/123.html。

編寫httpd.ini檔案,下面就列舉一些規則供大家參考。

[ISAPI_Rewrite]

#RewriteCond %{HTTP:Host} (?:www\.)?網址\.com

RewriteRule ^(.*)/index\.html$ $1/index\.php [I]

RewriteRule ^(.*)/guest\.html$ $1/guest\.php [I]

RewriteRule ^(.*)/products_([0-9,a-z]*)\.html$ $1/products\.php\?id=$2 [I]

RewriteRule ^(.*)/category-([a-z]+)_([0-9]+)(.*)\.html$ $1/class\.php\?lx=$2&page=$3 [I]

RewriteRule ^(.*)/category-([a-z]+)(.*)\.html$ $1/class\.php\?lx=$2 [I]

RewriteRule ^(.*)/category([0-9]+)b([0-9,a-z]+)_([0-9]+)(.*)\.html$ $1/class\.php\?clsid=$2&pingpai=$3&page=$4 [I]

RewriteRule ^(.*)/category([0-9]+)b([0-9,a-z]+)(.*)\.html$ $1/class\.php\?clsid=$2&pingpai=$3 [I]

RewriteRule ^(.*)/category([0-9]+)_([0-9]+)(.*)\.html$ $1/class\.php\?clsid=$2&page=$3 [I]

RewriteRule ^(.*)/category([0-9]+)(.*)\.html$ $1/class\.php\?c_code=$2 [I]

其它方面,友善URL引用,有助于搜尋引擎的枚舉。

注意伺服器上不要亂設定

繼續閱讀