为什么扩展名经常隐藏在URL上?


Answers:


29

从网址中删除扩展名有多种原因:

  • 使URL看起来更整洁
  • 使URL易于键入
  • 使网址更容易记住
  • 使网址对SEO关键字更友好
  • 能够更改技术-如果您想将网站从一种技术转移到另一种技术,那么这样做最简单,而无需用户甚至不知道URL上没有扩展名

请记住,许多网站都是由内容管理系统(CMS)生成的,它会使URL看起来像这样:/index.php?page=this-is-the-widget-page。这特别丑陋,并且不仅扩展而已。重写以删除index.php?page=它会更好。

Web上不需要扩展,因为服务器将文档类型作为标题发送。网页以text/htmlimage/png或作为图像提供image/jpeg。这使浏览器知道如何呈现内容,而无需使用扩展名来确定URL包含文本,HTML,PDF或图像(有关更多信息,请参阅Wikipedia文章Internet媒体类型)。

一些网站管理员选择在其URL上使用与该内容类型匹配的扩展名。因此,任何text/html文档都将具有.html扩展名,并且任何image/png文档都将具有.png扩展名。当将URL保存到文件系统中时,这会有所帮助,其中有关其内容类型的元数据会丢失。在大多数文件系统中,扩展名选择打开文件的程序。因此,即使某个网页由PHP提供服务,某些网站站长也会删除该.php扩展名,而另一些则由替换.html

还有一个问题是,如果URL /没有扩展名URL是否最好以结尾斜杠(结尾,这在Stack Overflow上有很多讨论。


11
在某些框架(例如MVC)中,URL无法识别文件,因此没有隐藏的扩展名。
亨里克·里帕

6

所有Web服务器都有一个或多个“默认文件”。每当访问者访问以斜杠/(即文件夹)结尾的URL时,就会显示该文件。

如果您的Web服务器上的默认文件名为,index.php并且有访问者访问www.example.com/pagename/,则表明他们实际上正在访问www.example.com/pagename/index.php

如果没有结尾/,则由于不必要,Web服务器可能只是重写URL来删除它。实际上,该站点就是这样做的。


2
我不确定问题是“如何”,而是“为什么”。帕特里克(Patrik)您的回答绝对正确。但是,斯蒂芬回答了“为什么”
布兰特·索洛维

4

这是我针对自己的个人网站的“酷” URI方案的类型。

就我个人而言,我开始这样做的原因(也许还有更多的Web设计师/开发人员!)是在阅读了“ Cool URIs not change”一文之后 –该文档由万维网的创始者Tim Berners撰写。 -李

在蒂姆·伯纳斯·李(Tim Berners-Lee)的著名文章中,他基本上说出斯蒂芬·奥斯特米勒(Stephen Ostermiller)对这个问题的出色回答所具有的相同原因 。

为了对您的主要问题“为什么扩展名隐藏在URL中?”给出更具体的答案,那么,我想说我的主要原因是:

1.为了将来验证URI:

例如,在当时使用URI之类的网址听起来像是个好主意: http://www.example.com/page.pl 其中.pl是Perl脚本的文件扩展名。但是,如今,大多数Web开发人员都使用ASP.NET或PHP进行后端脚本编写,因此,从今天开始http://www.example.com/page.php 听起来似乎是一个更好的主意,最终PHP和ASP / ASP.net将变得过时。因此,一个更好的主意是完全删除扩展名。

2.可读性和易记性:

将“很酷”的URI以口头形式在纸上(例如广告,名片等)传递给人们更容易,更不用说容易记住了。

3.“可破解性” *

尽管我会说这些天的绝大多数用户可能都通过搜索引擎搜索了所有内容–我什至看到有人会去地址栏并键入www.google.com,然后使用Google键入www.ebay.com!但是,我认为如果我有一个基于多媒体的网站,则URI http://www.example.com/video暗示可以在URI下找到音乐部分http://www.example.com/audio,依此类推。(我仍然使用地址栏访问网站–关于这种事情我相当老套!)

*(噢!“良好的维护能力” -那个词甚至还存在?嗯,确实现在!):-)

4. **美学: 使它们看起来更漂亮!(怪我的强迫症!)

但是,通过阅读各种与SEO相关的网站,我注意到许多网络管理员实际上在动态URI上附加了文件扩展名,例如:

实际的URI可能是: http://www.example.com/article

但是,网站站长将执行重写以使URI“看起来”为静态,例如: http://www.example.com/article.html

其背后的逻辑是,基本上,搜索引擎将为静态页面(显然,其更改可能性较小)分配更高的排名。(尽管我不是SEO方面的专家,但我个人并不认同这个想法–我猜测,由于Google和Bing算法背后的想法,它所需要的不仅仅是假冒的文件扩展名,让您进入SERP杆位!)

有关命名URI的更多信息,建议阅读以下文章:

蒂姆·伯纳斯·李:

W3C质量检查技巧:

Brian Kelly(英国网络焦点/ UKOLN-巴斯大学):

希望这可以帮助!


2

我完全同意以上所有答案。只是补充说,在URL中隐藏扩展的原因之一就是安全性。简而言之,如果您不在URL中公开扩展名,那么很难弄清构建应用程序所基于的技术。因此,假设用PHP制作的页面没有隐藏,并且扩展名没有被隐藏,那么黑客可能会发现PHP的漏洞并使用它执行某些恶意活动。


我同意您的意见,但是我认为使用URI混淆后端技术作为一种安全措施是没有用的。乍一看,您正在隐藏所使用的特定技术。不幸的是,最终用户只会愚弄他们。有些(如果不是大多数的话)不知道URL是什么,更不用说ASP / PHP / etc了。由于缺乏更好的短语,你是那种“说教合唱团。”
乔丹克拉克

1

无论您是否隐藏页面扩展名,人们仍然可以知道您使用了什么技术。通过使用cURL,并非不可能通过获取标头信息来获得技术。

curl -I -L rembatvideo.ga

然后,您会看到类似您的技术,缓存请求,连接等内容。


0

完全同意“ Stephen Ostermiller”的解释,但是我想提到隐藏URL扩展的技巧。为此,您必须使用.htaccess重写规则,这是可以帮助您的脚本:

将外部.php请求重定向到无扩展名的URL

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.