15

当我查看 Amazon.com 并看到他们的页面 URL 时,它没有.htm,.html.php在 URL 的末尾。

就像:
http ://www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie=UTF8&node=283155

为什么以及如何?那是什么样的扩展?

4

10 回答 10

24

您的浏览器不关心文件的扩展名,只关心服务器报告的内容类型。(好吧,除非您使用 IE,因为在 Microsoft,他们认为他们比您更了解您所提供的服务)。如果您的服务器报告所提供的内容是 Content-Type: text/html,那么无论文件名是什么,您的浏览器都应该将其视为 HTML。

于 2008-11-27T02:01:00.293 回答
11

通常,它是使用某种描述的 URL 重写方案来实现的。基本概念是,网络应该转向使用适当的 URI 来寻址资源,而不是泄漏实现细节的经典旧 URL,因此容易受到未来变化的影响。

可以在 Tim Berners-Lee 的文章Cool URIs Don't Change中找到对该主题的彻底讨论,该文章主张减少 URI 中不相关的内容,以帮助避免在实现发生更改时出现的问题,并且当资源确实移动到不同的 URL 时。这篇文章本身包含关于规划 URI 方案的一般建议,非常值得一读。

于 2008-11-27T02:00:28.030 回答
6

比大多数这些答案更具体:

Web 内容不使用文件扩展名来确定所提供的文件类型(除非您是 Internet Explorer)。相反,他们使用Content-typeHTTP 标头,该标头在图像内容、HTML 页面、下载或其他内容之前通过网络发送。例如:

Content-type: text/html

表示您正在查看的页面应被解释为 HTML,并且

Content-type: image/png

表示该页面是PNG图像。

如果文件是直接从磁盘提供的,则 Web 服务器通常使用文件扩展名来确定Content-type分配的内容,但是 Web 应用程序也可以生成任何Content-type他们喜欢的页面来响应请求。无论文件名的结构或扩展名如何,只要页面的实际内容与声明的 匹配Content-type,数据就会按预期呈现。

于 2008-11-27T03:17:48.437 回答
5

对于使用 Apache 的网站,他们可能正在使用 mod_rewrite 使他们能够重写 URL(并使它们对用户和 SEO 更友好)

您可以在这里阅读更多内容http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html 和这里http://www.sitepoint.com/article/apache-mod_rewrite-examples/

编辑:IIS 也有重写模块。

于 2008-11-27T01:54:25.110 回答
3

传统上,文件扩展名代表正在服务的文件。

例如

http://someserver/somepath/image.jpg

后来,同样的方法被用于允许脚本处理参数

http://somerverser/somepath/script.php?param=1234&other=7890

在这种情况下,该文件是一个处理“请求”并呈现动态创建文件的 php 脚本。

如今,应用程序比这复杂得多(即您提到的亚马逊)

然后没有一个单一的脚本来处理请求(但是一个更复杂的应用程序有几个文件/方法/函数/对象等),并且 url 更像是一个 web 应用程序的入口点(它可能有一个脚本后面但那是另一件事)所以现在像亚马逊这样的网络应用程序,是的,stackoverflow 不会在 URL 中显示文件,但是任何通信都由服务器端的应用程序处理。

没有文件扩展名的网站网址?

这里 I questions代表 webapp 和 322747参数

我希望这个小小的解释可以帮助您更好地理解所有其他答案。

于 2008-11-27T02:12:50.767 回答
1

那么在目录中有一个 index.html 文件,然后在浏览器中输入路径怎么样?我看到我的 Firefox 和 IE7 都自动输入了斜杠,我不必输入它。这更适合像我这样不认为地球上的每个 url 都应该调用 php、perl、cgi 和 10,000 个其他应用程序来发送几千字节数据的人。

于 2010-12-24T00:08:04.307 回答
0

很多帖子都提到了这一点,我会权衡一下。它绝对是一个 URL 重写系统,许多平台都有实现这一点的方法。

我曾为一些较大的电子商务网站工作过,现在它已成为网络存在的一个非常重要的部分,并提供了许多优势。

我建议采用您想要使用的技术,并研究该平台的 URL 重写机制示例。例如,对于 .NET,有 google 'asp.net url rewriting' 或使用像 MVC 这样的附加框架,它开箱即用地执行此功能。

于 2008-11-27T02:38:10.903 回答
0

很多人正在使用更“ RESTful ”类型的架构......或者至少,看起来像 REST 的 URL。

该站点(StackOverflow)不显示文件扩展名......它使用的是ASP.NET MVC

于 2008-11-27T01:54:22.787 回答
0

根据您的服务器的设置,您可以使用(或不使用)您想要的任何扩展。您甚至可以将扩展名设置为“.JamesRocks”,但这不会很有帮助:)

无论如何,以防万一您是网络编程的新手,所有这些乱码最后都有 GET 操作的参数,而不是页面的扩展名。

于 2008-11-27T01:54:27.090 回答
-1

在 Django(python 的 Web 应用程序框架)中,您自己设计 URL,独立于任何文件名,甚至服务器上的任何路径。

您只需说“我希望/news/<number>/此函数处理 url”之类的话

于 2008-11-27T02:08:22.430 回答