当我查看Amazon.com并且我看到他们的页面URL时,它没有.htm
,.html
或者.php
在URL的末尾.
它就像:http:
//www.amazon.com/books-used-books-textbooks/b/ref=topnav_storetab_b?ie = UTF8&node = 283155
为什么以及如何?这有什么样的延伸?
您的浏览器不关心文件的扩展名,只关心服务器报告的内容类型.(好吧,除非你使用IE,因为在微软他们认为他们比你更了解你所服务的内容).如果您的服务器报告正在提供的内容是Content-Type:text/html,那么无论文件名是什么,您的浏览器都应该将其视为HTML.
通常,它是使用某些描述的URL重写方案实现的.基本概念是Web应该转向使用适当的URI来寻址资源,而不是传统的旧URL,这些URL会泄漏实现细节,并且因此容易受到未来更改的影响.
关于这个主题的详细讨论可以在Tim Berners-Lee的文章Cool URIs Do not Change中找到,该文章支持减少URI中无关紧要的内容,作为帮助避免实现更改时出现的问题的一种方法,以及当资源移动到不同的URL时.文章本身包含有关规划URI方案的一般建议,非常值得一读.
比大多数答案更具体:
Web内容不使用文件扩展名来确定要提供的文件类型(除非您是Internet Explorer).相反,他们使用Content-type
HTTP标头,它在图像内容,HTML页面,下载或其他任何内容之前发送.例如:
Content-type: text/html
表示您正在查看的页面应解释为HTML,并且
Content-type: image/png
表示该页面是PNG图像.
Web服务器经常使用的文件扩展名,如果该文件是从磁盘直接送至确定什么Content-type
来分配,但Web应用程序还可以产生任何网页Content-type
,他们在响应请求喜欢.无论文件名的结构或扩展名如何,只要页面的实际内容与声明的内容匹配Content-type
,数据就会按预期呈现.
对于使用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的重写模块.