2011-10-09 43 views
3

例如,此网址是http://stackoverflow.com/questions/ask,而不是像http://stackoverflow.com/questions/ask.aspx之类的东西。我怎样才能做到这一点?如何摆脱URL中的实际文件名?

+1

[ASP.NET路由](http://msdn.microsoft.com/zh-cn/library/cc668201.aspx)使您可以使用不必映射到Web站点中特定文件的URL 。由于URL不必映射到文件,因此可以使用描述用户操作的URL,因此用户更容易理解。 – bzlm

+0

是asp.net路由一个通用的功能,或特别是MVC的组件(或者甚至很重要) –

+0

@Gabriel,因为使用古老的和不推荐的解决方案的答案已被接受,我会说它并不重要。 :) – bzlm

回答

0

添加引用到组件System.Web.Routing,然后将以下内容添加到您的global.asax文件中:

protected void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("", 
     "questions/ask/{question}", 
     "~/questions/ask.aspx"); 
} 
-1

这种情况发生在Web服务器实现处理程序时,它将给定的URL模式映射到实际的内容以提供服务。

在这个网站,它可能来自使用MVC框架(猜测)。

在Windows IIS可以使用http://www.iis.net/download/URLRewrite

0

如果你的问题不是特定于aspx页面,你可以在任何运行apache的web服务器上使用.htaccess文件来做到这一点(以及mod_rewrite - 但几乎所有这些)。

查看本网站上有关.htaccess的各种问题或查看大量简单的在线教程。

基本上你可以把一个特殊的文件.htaccess在你希望的根目录下受到影响,基本上说

相反的about_us/details.php你可以使用about_us/details

这是一个非常简单的例子

RewriteEngine on 
Options +FollowSymlinks 

RewriteRule ^questions/ask ../questions/ask.aspx [L]