【发布时间】:2014-01-12 13:15:25
【问题描述】:
我一直在做我的博客,想知道为什么有些博客有像“www.xyz./articles/15748”这样的网址,而我的博客有像“www.xyz/articles/test.aspx”这样的地址'。我的意思是他们是否使用某种形式的 xml 来填充他们预定义的网页。如果不是这样,为什么他们的网页没有任何扩展名,例如“.php”或“.htm”或“.aspx”。
【问题讨论】:
我一直在做我的博客,想知道为什么有些博客有像“www.xyz./articles/15748”这样的网址,而我的博客有像“www.xyz/articles/test.aspx”这样的地址'。我的意思是他们是否使用某种形式的 xml 来填充他们预定义的网页。如果不是这样,为什么他们的网页没有任何扩展名,例如“.php”或“.htm”或“.aspx”。
【问题讨论】:
可以通过Url Rewriting完成。
例如如何在 Asp.Net 中使用它 - http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
基本上它是一个模块,它将传入的 url 重写为 WebServer 可以处理的那个,然后将输出的 url 重写为与输入的 url 相同
【讨论】:
这取决于他们使用的框架,他们是使用 Web 服务器中的模块重写 URL,还是使用自定义 HTTP 处理程序 (ASP.Net) 处理 HTTP 请求。
当调用以aspx 为后缀的 url 时,这意味着您正在请求一个存在于服务器上的物理页面,然后使用 WebForms 框架通过 ASP.Net 运行时小跑并传送到您的浏览器。
现在,如果您使用 MVC 框架而不是 WebForms 框架,那么您的 URL 不会引用页面,而是引用对象和函数。如果我要请求 /User/Edit/1,该 URL 可以映射到 User 对象上的 Edit 函数,我们会将 1 作为参数传入。
此外,一些 Web 服务器具有 URL 重写功能,允许您将一个 URL 映射到另一个 URL,因此它可以侦听没有后缀的 URL,并将请求透明地路由到物理页面。
最后,至少在 ASP.Net 中,您可以在应用程序中编写处理程序来侦听 HTTP 请求,如果它愿意,它还可以执行一些透明路由。
这些只是几种方法,当然还有其他方法。
【讨论】: