当我查看Amazon.com并看到他们的网页网址时,网址末尾没有.htm
,.html
或.php
。
就像: http://www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie=UTF8&node=283155
为什么以及如何?那是什么样的延伸?
答案 0 :(得分:23)
您的浏览器不关心文件的扩展名,只关心服务器报告的内容类型。 (好吧,除非你使用IE,因为在微软他们认为他们比你更了解你所服务的内容)。如果您的服务器报告正在提供的内容是Content-Type:text / html,那么无论文件名是什么,您的浏览器都应该将其视为HTML。
答案 1 :(得分:10)
通常,它是使用某些描述的URL重写方案实现的。基本概念是,Web应该转向使用正确的URI来寻址资源,而不是泄漏实现细节的经典旧URL,并且因此容易受到未来更改的影响。
可以在Tim Berners-Lee的文章Cool URIs Don't Change中找到关于该主题的详尽讨论,该文章支持减少URI中无关紧要的内容,作为帮助避免实现发生变化时出现的问题的一种手段,以及资源何时移动到不同的URL。文章本身包含有关规划URI方案的一般建议,非常值得一读。
答案 2 :(得分:5)
对于使用Apache 的网站,他们可能正在使用mod_rewrite,使他们能够重写URLS(并使他们更加用户和SEO友好)
您可以在此处阅读更多内容http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html 在这里http://www.sitepoint.com/article/apache-mod_rewrite-examples/
编辑:还有IIS的重写模块。
答案 3 :(得分:5)
比大多数答案更具体:
Web内容不使用文件扩展名来确定要提供的文件类型(除非您是Internet Explorer)。相反,他们使用Content-type
HTTP标头,该标头在图像内容,HTML页面,下载或其他内容之前发送。例如:
Content-type: text/html
表示您正在查看的页面应解释为HTML和
Content-type: image/png
表示该页面是PNG图像。
如果文件直接从磁盘提供给确定要分配的Content-type
,则Web服务器通常使用文件扩展名,但Web应用程序也可以生成包含任何Content-type
的页面他们喜欢回应一个请求。无论文件名的结构或扩展名如何,只要页面的实际内容与声明的Content-type
匹配,数据就会按预期呈现。
答案 4 :(得分:3)
传统上,文件扩展名代表正在提供的文件。
例如
后来使用相同的方法允许脚本处理参数
http://somerverser/somepath/script.php?param=1234&other=7890
在这种情况下,该文件是一个处理“请求”的PHP脚本,并显示了一个动态创建的文件。
如今,应用程序要复杂得多(即你提到的亚马逊)
然后没有一个脚本处理请求(但是一个更复杂的应用程序,有几个文件/方法/函数/对象等),而url更像是Web应用程序的入口点(它可能有一个脚本,但另一件事)所以现在的网络应用程序,如亚马逊,是的stackoverflow不会在URL中显示文件,但任何提交都由服务器端的应用程序处理。
此处我问题代表webapp和 322747 参数
我希望这个小解释可以帮助你更好地理解所有其他答案。
答案 5 :(得分:1)
那么在目录中有一个index.html文件,然后键入浏览器的路径怎么样?我看到我的Firefox和IE7都自动设置了斜杠,我不必输入它。这更像是像我这样的人,不认为地球上的每个网址都应该调用php,perl,cgi和10,000个其他应用程序,只是为了发送几千字节的数据。
答案 6 :(得分:0)
很多人正在使用更“RESTful”类型的架构......或者至少使用看起来像REST的网址。
此网站(StackOverflow)不显示文件扩展名...它正在使用ASP.NET MVC。
答案 7 :(得分:0)
根据服务器的设置,您可以使用(或不使用)任何所需的扩展程序。您甚至可以将扩展名设置为“.JamesRocks”,但它不会非常有用:)
无论如何,万一你是网络编程的新手,最后都有乱码,有GET操作的参数,而不是页面的扩展名。
答案 8 :(得分:0)
很多帖子都提到了这一点,我会权衡。它绝对是一个URL重写系统,许多平台都有办法实现这一点。
我曾为一些较大的电子商务网站工作,现在它已成为网络存在的一个非常重要的部分,并提供了许多优势。
我建议您使用您想要使用的技术,并研究该平台的URL重写机制的示例。例如,对于.NET,谷歌'asp.net url rewriting'或使用像MVC这样的附加框架,它可以开箱即用。
答案 9 :(得分:-1)
在Django(python的Web应用程序框架)中,您可以自己设计URL,而不管任何文件名,甚至是服务器上的任何路径。
您只需说出“我想通过此功能处理/news/<number>/
网址”