我一直想知道这个问题,却从来没有找到一个好的解决方案。但是这个问题让我想起了这个问题。

当我的网站上有一个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目录的内容实际作为页面提供。主要区别在于,添加了标记语言,并在浏览器中对其进行了解析。使用这种标记语言,响应标头中的Content-Type:text/html;标记就可以指示任何文件的文件类型。 HTML似乎是唯一没有一致命名的扩展名的唯一“文件类型”,只是保存时除外。

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

更不用说跨平台文件命名大战了。Windows窗口需要3或更少的数字扩展名,而unix / mac可以具有更多扩展名。那么应该是.HTM还是.HTMLNONE并由平台决定?

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

评论

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

@zolomon,您可以做到这一点,或者更好地使用动态URI解析器,如Wordpress那样,并将*。*重定向到该方法。

#1 楼

在存在多个表示形式或客户端软件绝对愚蠢且拒绝单独接受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),因此客户端可以将其保存为索引。 html或aa(如果他们愿意的话),同时仍然可以访问它。
http://www.somesite.com/subdirectory/index.html-如果您提供.atom,.xml或类似版本,则也应遵循.html版本(并且可以正常链接通过自动协商版本上的LINK标签)-使用HTTP Content-Location h急于指向自动协商版本-请记住,您也可以使用多语言(.en,.es等)或多字符集(.utf8,.utf16等...)
http://www.somesite.com/subdirectory/index.phphttp://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-keywords
http://www.somesite.com/subdirectory/?page=some-relevant-keywords
http://www.somesite.com/subdirectory/?page=some-relevant-keywords&even=more-keywords-如果有无数种操作内容的方法,那就太好了-但通常页面应拥有其自己的URL,而不是查询字符串,并且应避免使用此类URL(尝试使计算机不识字的人在其中键入其中之一)


评论


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

–提莫·霍维宁(Timo Huovinen)
2014年4月4日19:28



#2 楼

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

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


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

这还具有使您的URL更加简洁的附加好处(并且更易于在电话上读出-“示例点com斜杠产品”要好得多)听起来比“示例点com斜杠产品dot html”),并且将来更容易切换技术(因为不需要更改URL)。

评论


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

–塔尔维·瓦蒂亚(Talvi Watia)
2010-09-19 23:54

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

–敬畏
2011年1月19日下午6:47

多年后重新审视这一做法,最佳做法似乎占了上风。但是,我仍然想知道,当网络爬虫逻辑最终学会解析操作数时,将会发生什么。例如some-relevant-keywords与(some)(!exclude-> relevant)(!exclude-> keywords)等效。根本原因:/?query = some-relevant-keywords已经是文字上的排除。

–塔尔维·瓦蒂亚(Talvi Watia)
18-3-28在21:46



#3 楼

很酷的URI不会改变。 (转到标题为“那该怎么办?设计URI”的部分)。

#4 楼


是否优选具有文件扩展名?


RFC中没有强制要求具有文件扩展名的内容,也没有要求您保留它们的内容出来。您可以自行选择。

一致的HTTP URI不需要任何文件扩展名。有很多HTTP标头(特别是MIME类型)可以处理文件扩展名原本用于的所有内容。

也就是说,当今大多数浏览器实际上都依赖于MIME类型的组合,扩展名和前几个字节的二进制“指纹”来确定内容类型。有时这可能会产生令人惊讶的结果,因此,我们的网站管理员必须设置正确的标头(如果我们可以101%确信标头是正确的,并且有可能禁用内容类型嗅探,这一点很重要。)在一种情况下,文件扩展名很有用:如果最终用户将内容从您的站点保存到本地计算机以供以后使用。理论上,“智能”浏览器应确保所保存的内容适用于本地计算机类型;但实际上,您可以通过提供具有行业标准扩展名(例如.jpg,.mp4,.css等)的内容来帮助所有人。以我的经验,所有浏览器都可以正确处理HTML类型。您不需要自己在HTML上添加.htm / .html扩展名,浏览器将正确处理此特定内容类型。

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

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

我个人的选择已经变成:


当我的Web应用程序动态生成HTML时,我没有添加'fake'.html扩展名来模仿实际上并非真正的目录和文件结构那里。我标准化URL,并标准化出于SEO原因使用的URL格式。我个人更喜欢在URL的最后一个叶子上加上斜杠,即http://example.org/first/second/,但这是一个问题。
当我们实际上谈论的是实际文件上传到某个地方的硬盘时,我会保留类型的“普通”文件扩展名。因此,.css / .js / .exe / .mp4等用于此类内容。


评论


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

–塔尔维·瓦蒂亚(Talvi Watia)
2010-09-19 23:49

#5 楼

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

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

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

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

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

更改了相同的链接以使用.html,搜索引擎对该网站发狂了。

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

我想认为搜索引擎更智能,或者偏见更少,但这就是我在页面上看到的。 br />

评论


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

–塔尔维·瓦蒂亚(Talvi Watia)
2010-09-19 23:46

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

–瓦尔特·石炉
2010-09-21 23:35

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

– Damusnet
10-10-14在11:43

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

–丹
2014年1月1日19:45

很抱歉这么晚回复,但我记得有一阵子Matt Cutts提到如果可能要使用.html。 (更多)。搜索引擎对扩展敏感,在某种程度上说是合理的,就像想象看到http://example.com/index.exe

–提莫·霍维宁(Timo Huovinen)
14年4月4日在19:37

#6 楼

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


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


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

评论


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

–塔尔维·瓦蒂亚(Talvi Watia)
2010-09-19 23:52

#7 楼

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

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

评论


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

–塔尔维·瓦蒂亚(Talvi Watia)
13年2月25日在16:55