ASP.NET URL重写查询字符串

时间:2012-02-17 08:17:53

标签: asp.net url-rewriting

为了更加用户友好的环境,我希望删除页面扩展名并查询字符串不可见。例如,从http://www.example.com/news.aspx?id=123开始,我希望它为http://www.example.com/news/123。我怎样才能获得它?

我还想借此机会提出另外两个问题:

  • 使用URL重写时,是否必须为每个页面指定规则?
  • 哪个更好用于ASP.NET中的URL重写 - .htaccess文件或web.config中的规则设置?

感谢。

2 个答案:

答案 0 :(得分: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
   );

您在global.asax应用程序启动事件中以与在MVC中相同的方式注册这些“路由”。

这样就可以在您的网络应用中以与http://www.domain.com/news/123相同的方式解释http://www.domain.com/news.aspx?id=123

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

答案 1 :(得分:0)

  
      
  • 使用URL重写时,是否必须为每个中心指定一个规则   页?
  •   

没有大多数URL重写机制允许使用正则表达式来组合URL以使用一个特定规则。

  
      
  • 最好用于ASP.NET中的URL重写 - 中   .htaccess文件或web.config中的规则设置?
  •   

使用IIS 7或更高版本时,可以使用IIS URL重写模块,请参阅http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

使用IIS 6或更低版本时,我更喜欢来自http://www.urlrewriting.net/的URL重写模块,但您可以使用其他模块。