2012-02-17 165 views
3

對於更加用戶友好的環境,我希望刪除頁面擴展並查詢字符串不可見。例如,從http://www.example.com/news.aspx?id=123我希望它是http://www.example.com/news/123。我如何獲得它?查詢字符串的ASP.NET URL重寫

我也想利用這個問題的機會,把另外兩個問題:

  • 當使用URL重寫,我必須指定每個頁面的規則?
  • 哪個更適合用於ASP.NET中的URL重寫 - .htaccess文件或web.config中的規則設置?

感謝。

回答

1

您可以使用在ASP.Net MVC中引入了這個目的,該URL路由類。這些類可以用於任何.Net Web應用程序,並且不限於MVC版本。

隨着「System.Web.Routing」命名空間的地方,你可以定義路由作爲規則,如;

routes.MapPageRoute(
     "News Category", // Route name 
     "News/{*ID}",  // Route URL 
     "~/News.aspx"  // Web page to handle route 
    ); 

您在相同的方式來你在MVC將登記在Global.asax的應用程序啓動時,這些「路線」。

這將允許http://www.domain.com/news/123以與http://www.domain.com/news.aspx?id=123相同的方式在您的web應用程序中被解釋。

Here's a recent article on using the MVC routing namespace in a traditional aspx application.

0
  • 當使用URL重寫,我必須爲每個
    頁面的規則?

沒有最URL重寫機制允許正則表達式中使用的URL相結合,使用一個特定的規則。

  • 哪個是更好地使用URL中的ASP.NET重寫 - 在
    .htaccess文件或規則在web.config中的設置?

當使用IIS 7或者,你可以使用IIS URL重寫模塊,見http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

當使用IIS 6或降低我喜歡URL重寫從模塊:http://www.urlrewriting.net/但還有其他你可以使用。

+0

好的建議,但這些依賴於IIS的版本或額外的模塊。該System.Web.Routing命名空間是出於這樣的目的在.NET Framework中的正式實施命名空間。 – 2012-02-17 08:27:42