ASP.net實現無副檔名的URL重寫。簡單、方便、無需ISAPI

來源:互聯網
上載者:User
URL重寫已經有很多的方法,但是多數都有一個缺點,就是不支援無副檔名的網頁。比如把http://blog.knowsky.com/category_1_1.htm 轉換為 http://blog.knowsky.com/category.aspx?id=1。
  
  微軟提供的方法需要在根目錄裡面建立jyk的檔案夾,然後再建立一個default.aspx的檔案,如果您有100名會員的話,這是一個不可想象的事情。
  
  另一個方法就是使用ISAPI過濾器,但是這個一般需要在伺服器上安裝一個DLL檔案,自己沒有伺服器就不好辦了。
  
  下面提供一個可以說是我發明的一個方法——不知道以前有沒有人想到過——利用兩個特性來實現。
  
  第一個:IIS裡面的找不到檔案的錯誤設定。
  
  第二個:asp.net 裡面的Server.Transfer("topic.aspx?id=jyk");
  
  這兩個結合起來就可以達到我們的目的了。
  
  
  
  思路:利用404b錯誤捕捉客戶的請求,再使用Server.Transfer轉向。
  
  
  
  在我們訪問http://www.aaa.com/jyk 的時候,假設這時伺服器上沒有jyk檔案夾,那麼會返回什麼結果呢?會返回一個“無法找到該頁”的頁面,那麼這個返回結果能不能自己控制一下呢?很幸運IIS提供了這個功能,我們可以把這樣的錯誤指定到網站裡的一個頁面。
  
  
  
  操作步驟:
  
  第一步:開啟IIS管理器,網站屬性——自訂錯誤標籤——404錯誤——點擊修改——修改“訊息類型”為“URL”,在下面的文字框裡填寫處理這個錯誤得頁面名稱,比如/none.aspx。
  
  第二步:在我們的網站根目錄下建立一個none.aspx的網頁。在裡面隨意寫點內容(測試用)。
  
  
  
  設定完畢,這時再訪問http://www.aaa.com/jyk,顯示的就是 none.aspx的網頁內容了。注意這時瀏覽器裡面的URL地址仍然是http://www.aaa.com/jyk,而不是http://www.aaa.com/none.aspx 。這一點很重要,如果地址變了,那就沒有意義了。
  
  那麼我們怎麼把頁面轉到我們希望的頁面呢,這時所有的找不到檔案的情況都會轉到none.aspx檔案,顯然這不是我們想要的最終結果。那麼我們怎麼擷取客戶輸入的網址呢?
  
  開啟none.aspx的後台檔案,
  
  
  
  string URL = Request.Url.Query;
  
  
  我們可以使用上面的語句來擷取URL地址,得到的地址格式是:
  
  ?404http://www.aaa.com/jyk
  
  其中 “?404”是固定的,過濾掉它就是瀏覽器裡面的URL地址了。
  
  剩下的事情就是根據情況來轉換網頁了。可以拆串,再用switch來判斷;也可以用Regex來判斷。因為我正則不熟,我採用的是switch的方式。Regex請參考其他的資料,我也在找,如果您找到了請共用一下,謝謝。
  
  優點:
  
  1、 支援無副檔名的網頁。不用建立檔案夾和檔案。
  
  2、 思路簡單,用法也很簡單,代碼也不複雜,不涉及高深的理論;
  
  3、 支援搜尋引擎,就是說可以被各大搜尋引擎搜錄。
  
  4、 可以配合網域名稱泛解析使用。
  
  缺點:
  
  1、 需要修改一下IIS 404b錯誤的處理方法;
  
  2、 效率要略微低一點。
  
  3、 如果您只使用.aspx的副檔名的話就可以不用修改IIS了。
  
  4、 Asp不支援。因為asp的Server.Transfer不能帶參數(?id=jyk),不能傳遞參數的重寫幾乎沒有什麼意義。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.