2011-10-09 42 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]