2012-02-17 166 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