我很確定stackoverflow.com是使用ASP.NET創建的,但不管在哪裏點擊,我都沒有在地址欄中看到.aspx擴展名。 它是如何完成的,是否有特殊原因?.NET網站如何隱藏文件的.aspx擴展名?
回答
在使用stackoverflow的情況下,他們使用ASP.NET MVC而不是ASP.NET web表單。使用Web表單時,url指向磁盤上的文件,而MVC指向控制器操作。如果您使用的是webforms,則需要使用URL重寫。 Scott Guthrie在做URL重寫時有good article。
您可以使用ISAPI重寫(對於IIS)執行此操作和更多操作。它允許你創建友好的網址,而不需要所有醜陋的查詢字符串。它爲用戶提供了一個更友好的界面,可以讓您的內容更加可搜索。
如果您使用的是Apache,請使用mod_rewrite。
兩者的基本前提是它們採用友好的URL(就像您在本網站上看到的那樣),然後使用一系列規則(通常是指定的正則表達式)將它轉換爲內部URL或查詢字符串很容易被代碼理解。
一個例子是他們通過使用變換規則將posts/edit/<postnumber>
轉換爲editPost.aspx?postNumber=<postnumber>
。
本網站使用ASP.NET MVC框架和Urls映射到非物理頁面的路由。路由傳遞給控制器,然後控制器決定如何顯示頁面。
最有可能通過其URL重寫做...
的Web服務器正在網址就像在你的瀏覽器&器的地址欄中的那些他們repointing到場景
這可能是背後的ASPX頁面在.NET HTTP模塊或一個ISAPI處理程序中完成的IIS
斯科特Gutherie在他的關於URL的網站一個很好的文章改寫
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
您確定「乾淨」的URL可以通過ASP.NET中的URL重寫來完成。然而,在這種特殊情況下(stackoverflow.com),URL是由ASP.NET MVC框架的本質完成的。 – 2008-10-22 02:28:52
...這就是所謂的「ASP.NET MVC的本質」在這種情況下是System.Web.Routing。 – 2009-01-29 00:36:25
正如其他人已經回答,StackOverflow是使用ASP.NET MVC構建的,ASP.NET MVC使用System.Web.Routing。但是System.Web.Routing不是ASP.NET MVC的一部分,它是帶有SP1的RTMd,並且意味着可以在沒有ASP.NET MVC的情況下使用它。你可以看到如何在這裏的WebForms使用它:http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx這裏:http://www.codeplex.com/ASPNET35Routing
,並儘可能的理由:
- 你可以改變技術(說PHP)無索引或書籤的網址,打破
- 您的網址更「REST'ful和對應的資源,而不僅僅是文件
- 您可以記住的網址或通過電話讀給別人更容易
你可以通過修改你的web.config文件來實現。
<configuration>
<system.webserver>
<rewrite>
<rules>
<rule name="RemoveASPX" enabled="true" stopProcessing="true">
<match url="(.*)\.aspx" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="AddASPX" enabled="true">
<match url=".*" negate="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="{R:0}.aspx" />
</rule>
</rules>
</rewrite>
</system.webserver>
</configuration>
下面的代碼工作正常,只要在網頁的.aspx,.ashx的是在應用程序文件夾。首先解決.aspx頁面,然後是.ashx。
例如,如果您嘗試使用localhost/AppFolder/Time,它會嘗試解析localhost/AppFolder/Time.aspx,如果找不到,則使用localhost/AppFolder/Time.ashx。
P.S.
我沒有完全測試這段代碼,所以要小心。
它不考慮可能具有.aspx文件的文件夾,因此,如果您嘗試訪問/ PhysicalApplicationPath/MYFOLDER/page,則它不會解析爲/PhysicalApplicationPath/MYFOLDER/page.aspx。
代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
namespace NameSpace
{
public class Global : System.Web.HttpApplication
{
private void mapearUrlAmigaveis()
{
String url = Request.Path.ToString().ToLower();
int positionQuestionMarkParameter = url.IndexOf('?');
String urlSemParametros = (positionQuestionMarkParameter != -1) ? url.Substring(0, (positionQuestionMarkParameter - 1)) : url;
String[] splitBarra = urlSemParametros.Split('/');
int indexOfUltimaBarra = urlSemParametros.LastIndexOf('/');
if (splitBarra.Length > 0)
{
String ultimaBarra = splitBarra[(splitBarra.Length - 1)];
String caminhoLocalUltimaBarra = Request.PhysicalApplicationPath + ultimaBarra;
String parametros = ((positionQuestionMarkParameter != -1) ? url.Substring((positionQuestionMarkParameter - 1), (url.Length - 1)) : String.Empty);
if (System.IO.File.Exists(caminhoLocalUltimaBarra + ".aspx"))
{
Context.RewritePath(urlSemParametros + ".aspx" + parametros);
}
else if (System.IO.File.Exists(caminhoLocalUltimaBarra + ".ashx"))
{
Context.RewritePath(urlSemParametros + ".ashx" + parametros);
}
}
}
}
}
您可以在C#.NET這樣做是爲了用在ASP.NET您的網址自定義擴展。
讓代碼中的「.recon」爲您定製的擴展。 (即將「.recon」替換爲您自己的擴展名)
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
if (app.Request.Path.ToLower().IndexOf(".recon") > 0)
{
string rawpath = app.Request.Path;
string path = rawpath.Substring(0, rawpath.IndexOf(".recon"));
app.Context.RewritePath(path+".aspx");
}
}
- 1. 如何在網站中隱藏文件擴展名?
- 2. 如何使用Apache在我的網站的URL中隱藏文件擴展名?
- 3. Azure網站隱藏.html擴展
- 4. 隱藏文件擴展名是自
- 5. 隱藏文件夾和擴展名
- 6. 在url中隱藏文件擴展名?
- 7. 使用htaccess隱藏文件擴展名
- 8. 隱藏網址的擴展名
- 9. 如何隱藏PHP中的文件名和擴展名?
- 10. 如何製作不帶文件擴展名的ASPX網頁?
- 11. 如何隱藏URL的.php擴展名?
- 12. 隱藏文件擴展名(網頁)和URL重寫的好處
- 13. 如何隱藏擴展名和包含的文件夾.htaccess的
- 14. 如何隱藏QFileSystemModel上的文件擴展名
- 15. 在URL中隱藏網站文件名
- 16. 隱藏網址擴展名時找不到css文件?
- 17. 在網址中隱藏文件擴展名
- 18. 隱藏網址擴展
- 19. 隱藏網頁擴展
- 20. 隱藏擴展名在.htaccess
- 21. 如何導入文件擴展名爲* .aspx *的JavaScript文件?
- 22. 如何隱藏所有文件擴展名?
- 23. 如何使用.htaccess隱藏文件擴展名+限制訪問
- 24. 如何隱藏PHP文件擴展名而不使用.htaccess?
- 25. 如何隱藏.php文件擴展名,而無需使用.htaccess?
- 26. 如何使用.htaccess隱藏.php網址的擴展名?
- 27. 如何隱藏URL擴展
- 28. 如何製作缺少文件擴展名的網站?
- 29. 需要使用aspx擴展名的umbraco網站的URL
- 30. 如何隱藏瀏覽器.aspx擴展在Asp.net
但爲什麼隱藏aspx擴展? – 2008-10-28 13:15:38