我经常看到URL扩展名是隐藏的(例如.html.php),但并非所有网站都这样做。

为什么网站管理员会隐藏扩展名?是出于安全性,使URL看起来更整洁还是出于其他目的?

评论

w3.org/Provider/Style/URI.html

#1 楼

从URL删除扩展名的原因有很多:


使URL看起来更简洁
使URL易于键入
使URL易于记住
要使URL更加适合SEO关键字
要能够更改技术,如果您想将网站从一种技术转移到另一种技术,那么最简单的方法就是不用用户甚至不知道是否有扩展名在URL上

请记住,许多站点是由内容管理系统(CMS)生成的,它将使URL看起来像这样:/index.php?page=this-is-the-widget-page。这特别丑陋,并且除了扩展之外,还有很多其他问题。重写以删除index.php?page=会使它变得更好。

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

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

还有一个问题是,URL是否最好以结尾斜杠(/ ),如果他们没有扩展名,则会在Stack Overflow上进行大量讨论。

评论


在某些框架(例如MVC)中,URL无法识别文件,因此没有扩展名可以隐藏。

–亨里克·里帕(Henrik Ripa)
13年5月10日在8:31

#2 楼

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

如果Web服务器上的默认文件名为index.php且访问者访问www.example.com/pagename/ ,他们实际上正在访问www.example.com/pagename/index.php。如果没有尾随/,则由于不需要,Web服务器可能只是重写URL来删除它。实际上,该网站就是这样做的。

评论


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

–布兰特·索洛维(Brandt Solovij)
13年5月9日在20:02

#3 楼

这是我希望在自己的个人网站上使用的“酷” URI方案的类型。

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

在Tim Berners-Lee着名的文章中,他基本上指出
斯蒂芬·奥斯特米勒(Stephen Ostermiller)对这个问题的出色回答也有相同的原因。好吧,我想说我的主要原因是:

1。为了使URI面向未来:例如,在当时使用URI听起来像是一个好主意,例如:
http://www.example.com/page.pl
其中.pl是文件Perl脚本的扩展名。但是,如今,大多数Web开发人员都使用ASP.NET或PHP进行后端脚本编写,因此,从今天开始,听起来似乎是一个更好的主意,最终PHP和ASP / ASP.net将会变老,老式的。因此,最好将所有扩展名全部删除。

2。可读性和易记性:

将“很酷”的URI口头传递给人们,在纸上(例如广告,名片等)更容易,更不用说容易记住了。 />
3。 “可破解性” *

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

*(哦!“可破解性” –这个词甚至存在吗? !好吧,现在开始!):-)

4. **美学:
让它们看起来更漂亮! (责怪我的OCD!)

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

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

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

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

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

Tim Berners-Lee:


“超文本样式:酷URI不变”

W3C质量检查技巧:


明智地选择URI
管理URI
使URI可读(草稿)
使URI可读(草稿更新)

Brian Kelly(英国Web Focus / UKOLN-巴斯大学):


“ Web焦点:URI命名策略指南”

希望有帮助!

#4 楼

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

评论


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

–乔丹·克拉克(Jordan Clark)
2014年3月31日14:28

#5 楼

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

curl -I -L rembatvideo.ga


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

#6 楼

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

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

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/ [R=301,L]