是否应该使用文件扩展名?


26

我一直对此感到疑惑,却从未找到好的解决方案。

但是这个问题让我想起了。

当我的网站上有URL时,可以通过以下任何一种方式显示和访问该URL:

http://www.somesite.com/subdirectory
http://www.somesite.com/subdirectory/
http://www.somesite.com/subdirectory/index.htm
http://www.somesite.com/subdirectory/index.html
http://www.somesite.com/subdirectory/index.php
http://www.somesite.com/subdirectory/index.asp
http://www.somesite.com/subdirectory/some-relevant-keywords
http://www.somesite.com/subdirectory/some-relevant-keywords.htm
http://www.somesite.com/subdirectory/index.php?page=some-relevant-keywords
http://www.somesite.com/subdirectory/?page=some-relevant-keywords
http://www.somesite.com/subdirectory/?page=some-relevant-keywords&even=more-keywords

等等...

现在,我可以理解在URL中添加关键字的优点。即使是最基本的SEO指南也将提到做到这一点。...但是出于理智,清晰,易读,易用等原因,包括遵守网络规范 ...

是否最好使用文件扩展名?

确实,我的内在逻辑告诉我:是的,应该。原因是这可以追溯到互联网主要是USENET,FIDONET,FTP和GOPHER的过去。

请参阅,如果URL没有文件名,则通常将其视为目录。这是出现index.htm的地方,因为默认情况下,如果未找到索引文件,此目录将列出目录。但是,很快,Web程序员开始重写此方法,并使用index.htm将该Web目录的内容实际作为page服务。主要区别在于,添加了标记语言,并在浏览器中对其进行了解析。使用这种标记语言,Content-Type:text/html;响应标头中的标记就可以指示任何文件的文件类型。HTML似乎是唯一没有一致命名的扩展名的“文件类型”,除了保存时。

不幸的是,一旦网页成为主要内容,实际显示目录内容便成为安全错误,因此所有内容都保持隐藏状态,仅显示实际的URL内容。

更不用说跨平台文件命名大战了。.基于Windows的窗口需要3位数或更少的扩展名,而unix / mac可以具有更多的扩展名。所以它应该是.HTM.HTMLNONE让该平台决定?

因此,从本质上讲,我想我想弄清楚的是SEO之外,并且更多地涉及美学和网站合规性。


您将如何设置?在您的.htaccess文件中?我的意思是,将.html文件的路径更改为第一个示例吗?
Zolomon

1
@zolomon,您可以这样做,或者更好的是使用动态URI解析器,如Wordpress并重定向*.*到该解析器。
Talvi Watia

Answers:


20

如果存在多个表示形式,或者客户端软件绝对是愚蠢的,并且拒绝单独接受Content-Type(QuickTime,RealPlayer,Outlook等,我在看您),请使用.extension:

  • http://www.somesite.com/subdirectory -这可以是使用Canonical META标签指向实际表示形式的自动协商版本

  • http://www.somesite.com/subdirectory/ -始终值得在任何URL上使用斜杠,但要使用Canonical META标签(不要重定向,因为这是不必要的减速),以指向正确的URL

  • http://www.somesite.com/subdirectory/index.htmhttp://www.somesite.com/subdirectory/some-relevant-keywords.htm-三个字符扩展名限制不适用于HTTP(仅适用于基础FileSystem / OS),因此客户端可以将其保存为index.html或aa(如果需要),同时仍可以访问它

  • http://www.somesite.com/subdirectory/index.html -如果提供的是.atom,.xml或类似版本,则也应遵循.html版本(并通过自动协商版本上的LINK标记规范地链接至该版本)-使用HTTP Content-Location标头指向到自动协商版本-请记住,您也可以使用多语言(.en,.es等)或多字符集(.utf8,.utf16等)。

  • http://www.somesite.com/subdirectory/index.php并且http://www.somesite.com/subdirectory/index.asp-除非您正在提供源代码,否则这些都无济于事

  • http://www.somesite.com/subdirectory/some-relevant-keywords -SEO是一种不断变化的艺术,如果对您有用,那么太好了

  • http://www.somesite.com/subdirectory/index.php?page=some-relevant-keywordshttp://www.somesite.com/subdirectory/?page=some-relevant-keywords并且 http://www.somesite.com/subdirectory/?page=some-relevant-keywords&even=more-keywords-如果有无数种操作内容的方式,那就太好了-但通常页面应使用其自己的URL而不是查询字符串,并且应避免使用此类URL(尝试让计算机不识字的人键入以下内容之一)那些)


1
多语言扩展?那是我第一次看到这样的东西。我记得曾经读过Google /es/subdirectory/index.html甚至更喜欢子域之类的文件夹http://es.example.com/subdirectory/index.html。您是否了解搜索引擎对.es扩展的支持程度如何?因为我会喜欢使用它。(您也可以将它们组合吗?例如/index.utf16.es吗?)
Timo Huovinen 2014年

13

我要说的是,如果您使用的软件允许您省略文件扩展名,请不要包括。因此,从您的示例列表中,我的偏好是:

http://www.somesite.com/subdirectory/some-relevant-keywords

浏览器不在乎站点上是否有目录,还是HTML文件,.asp文件或其他内容,它们只是发出HTTP请求并获得HTTP响应。因此,如果扩展名是多余的,请将其删除。

这还具有使URL更加简洁的附加好处(并且更易于在电话上读出-与“ example com slash products dot htm l”相比,“ example com slash products”听起来更好听得多),并使其更容易将来切换技术(因为无需更改URL)。


4
由于搜索引擎优化(SEO)和美观的原因,我正在朝着最佳实践的方向努力。
Talvi Watia 2010年

是的,浏览器并不在乎,但是服务器会在乎它是否是asp,aspx或其他需要在Web服务器上进行额外处理的类型。
敬畏

多年后重新考虑这一点,最佳实践似乎占了上风。但是,我仍然想知道,当网络爬虫逻辑最终学会解析操作数时,将会发生什么。例如,some-relevant-keywords具有(some) (!exclude->relevant) (!exclude->keywords)使每个SEO专家立即更改它的功能,以some+relevant+keywords破坏使用连字符作为分隔符的美观性和可读性。根本原因:/?query=some-relevant-keywords已经是字面上的排除。
Talvi Watia


8

是否最好使用文件扩展名?

RFC中没有强制要求具有文件扩展名的内容,也没有要求您将其保留的内容。这是您的选择。

一致的HTTP URI不需要任何文件扩展名。有丰富的HTTP标头集(尤其是MIME类型),可以处理文件扩展名原本用于的所有内容。

也就是说,当今大多数浏览器实际上都依靠MIME类型,扩展名和前几个字节的二进制“指纹”的组合来确定内容类型。有时这可能会产生令人惊讶的结果,因此,我们的网站管理员必须设置正确的标头(如果我们确定标头是正确的,并且有101%的权限,则有可能禁用内容类型嗅探),这一点很重要。

在一种情况下,文件扩展名很有用:如果最终用户将内容从您的站点保存到其本地计算机上以供以后使用。理论上,“智能”浏览器应确保所保存的内容适用于本地计算机类型;但实际上,您可以通过提供具有行业标准扩展名(如.jpg,.mp4,.css等)的内容来帮助所有人。以我的经验,所有浏览器都可以正确处理HTML类型。您不需要自己在HTML上添加.htm / .html扩展名,浏览器将正确处理此特定的内容类型。

安全性:有人可能会认为隐藏您正在使用的平台(.php / .asp等)有安全优势。确实如此。在实践中,我认为任何优秀的黑客都会马上发现这一点,因此,我不认为仅出于安全性而隐藏这些扩展值得一试。

特殊考虑:如果您打算将来使用CDN,并且您的CDN是“推送”类型的(内容是事先通过SFTP上载到CDN的),那么您可能希望保留文件扩展名。大多数第三方系统都会查看文件扩展名,以发现用于提供内容的MIME类型。

我个人的选择已成为:

  • 当我的Web应用程序动态生成HTML时,我不会添加“假” .html扩展名来模仿实际上不存在的目录和文件结构。我标准化URL,并标准化出于SEO原因使用的URL格式。我个人更喜欢在URL的最后一个叶子上加一个斜杠,即http://example.org/first/second/,但这是一个品味问题。

  • 实际上,当我们谈论实际文件上传到某个地方的硬盘时,我会保留该类型的“普通”文件扩展名。因此,.css / .js / .exe / .mp4等用于此类内容。


一件事,添加.htm模仿目录(而不是覆盖index.htm)实际上并不是“伪造”的,因为您正在提供 HTML内容。如果内容不是 HTML,那将是假的。
Talvi Watia 2010年

2

我做了一些非正式的实验,发现的结果令我感到惊讶,但有一定道理。

从内容交付给用户的角度以及屏幕抓取的角度来看,Content-Type都是一天的主宰。

但是,扩展的存在与否以及扩展的含义似乎会影响搜索引擎的访问。

当我完全省略任何扩展名时,我的命中率相对较低-好像URL是位置或动态内容,因此不值得索引。

当我更改相同的链接以使用.xml扩展名时,由于页面实际上是由XSLT(在服务器端)生成的,因此索引实际上进一步下降了-也许是因为它认为这仅仅是数据或某些编程请求的结果。

当我将相同的链接更改为使用.html时,搜索引擎对该网站疯狂。

目前,我的网站透明地处理了所有这三个网站,但是当它提供可点击的链接时,我将返回URL的.html版本。

我想认为搜索引擎更智能,或者偏见更少,但这就是我观察到的页面出现的情况。


不会为同一资源使用多个URI导致重复页面?
Talvi Watia 2010年

从技术上讲,我想是这样,我怀疑接下来要做的正确的事情是让其他人简单地执行重定向。
Walt Stoneburner

这确实非常令人惊讶!您能否提供更多背景信息,例如哪些搜索引擎,您在多大程度上注意到这一变化等?
damusnet

我的访问量大幅度下降,虽然我仍然不确定,但我认为恰好是我从使用.html的rel canonical切换到不使用.html的那一刻。
2014年

很抱歉这么晚回复,但我记得有一阵子Matt Cutts提到如果可能要使用.html。(更多在这里)。它种是有道理的,搜索引擎对扩展敏感,只是想象一下http://example.com/index.exe
蒂莫Huovinen

2

不可以,除非您出于技术原因绝对需要此文件扩展名,否则不要为普通页面类型使用文件扩展名。它如何改善用户体验?可以输入更多信息,但是并没有告诉他们任何有用的信息。知道您的网站是PHP,ASP等,他们将能够做什么?没有文件扩展名的URL更简单,更简洁,更易用且更易记。

请参阅,如果URL没有文件名,则通常将其视为目录。

我不同意。通常,URL仅在其后有斜杠时才是目录。如果没有斜杠,则将其视为文件。


用户体验:如果文件扩展名为.php.asp如果用户将其保存,则它将是未知的文件类型,计算机盲人可能不知道如何重新打开它。没有文件类型,浏览器会添加它,但这可能会阻碍某些搜索引擎吗?
Talvi Watia 2010年

0

如果URI后面的内容实际上是文件,则仅应添加文件扩展名。但是,即使只有一种表示形式(JPG,PDF等),也可以删除它。

如果存在多种表示形式,则HTTP方式将是通过Accept标头协商格式。但是,如果您希望用户在其中说一句话,则可能需要扩展,以便他们可以通过请求一个或另一个URI来选择所需的表示形式(JPG,PNG等)。


这不仅涉及图像或其他资源,还涉及更多内容。对于非HTML资源,我将始终使用文件扩展名。如果用户碰巧“另存为”,大多数浏览器都不知道该怎么办。当然可以在标头中添加文件类型,但是一旦保存,客户端计算机将不知道如何重新打开该文件。
Talvi Watia
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.