URL路径是否应该区分大小写?


11

我的网站的URL当前不区分大小写。例如,以下两个链接都显示完全相同的页面:

  • http://example.com/about
  • http://example.com/About

但是,在访问wordpress.org网站时,我注意到URL区分大小写。例如,下面的第二个链接是404错误页面:

  • http://wordpress.org/about
  • http://wordpress.org/About

我的想法是使我的网站的URL区分大小写。除了避免重复内容这一明显问题之外,区分大小写的URL的优缺​​点是什么?

更新资料

Google似乎对自己的URL执行区分大小写的URL策略。例如,下面的第二个链接是404:

  • http://google.com/doodles
  • http://google.com/Doodles

更新2

感谢您的回答。我决定接受接受的答案中提到的建议,并在必要时实施301重定向。由于我正在使用WordPress,因此我的代码解决方案如下(以防万一有人感兴趣):

function force_lowercase_urls() {

    if ( is_admin() )
        return;

    if ( preg_match( '/[A-Z]/', $_SERVER['REQUEST_URI'] ) ) {

        wp_redirect( strtolower( $_SERVER['REQUEST_URI'] ), 301 );
        exit();
    }

}
add_action( 'init', 'force_lowercase_urls' );

1
But wouldn't that result in duplicate content? – henrywright如果您的站点正确使用了规范链接,则无需担心重复链接,并且您可以以百万种方式访问​​一页,并且永远不会受到重复内容的影响。
西蒙·海特

@bybe如果您通过数百万种方式访问​​了一个页面,则Googlebot将无法很好地抓取您的网站。有一个页面访问的屈指可数的方式是不太可能的伤害。
斯蒂芬Ostermiller

Answers:


6

默认情况下,用于服务Web内容的两个使用最广泛的操作系统文件系统的URL区分大小写具有非常不同的设置。您的URL是否区分大小写可能是您正在使用的功能:

  • Windows上运行的Microsoft IIS(不区分大小写的URL)显示相同的内容,而不考虑大小写。
  • 在Linux上运行的Apache HTTPD服务器 -区分大小写的URL-由于大写不正确,给出了404 not found错误。

我认为,两种默认设置都不是理想选择:

  • 无论大小写如何显示相同的内容都会使爬网更加困难。搜索引擎将多个URL上的相同内容视为重复内容。
  • 对于大写不正确显示错误页面不是用户友好的。用户键入时通常不介意大写。

理想的解决方案是仅在正确大写URL时显示页面。对于不正确的大小写,应该将用户重定向到301首选大小写。有一些方法可以实现:


1
我觉得这是DOS和Windows的产物,与以前在Unix环境中区分大小写的标准有所不同。
太阳

1
Apache是​​否对映射到文件系统的请求区分大小写,这取决于基础文件系统,而不是Apache本身。如果在Windows上运行Apache,则请求/iNdEx.HtMl/InDeX.hTml全部返回/index.html(前提/index.html是该文件系统上是物理文件)。
MrWhite

1
实际上,对于IIS来说似乎是相同的
MrWhite

1
好的,IIS始终在Windows(AFAIK)上运行,因此文件系统请求将始终不区分大小写。但是,许多站点将通过某种前端控制器来路由(重写)URL-在这种情况下,请求可能不会映射到文件系统上的物理文件,因此该URL可能区分大小写(除非应用程序专门区分大小写) -insensitive)-与Apache(在Windows上运行)基本相同。(?)
MrWhite

2
在研究最近/忙碌的问题“ URL为什么区分大小写? ”时,我实际上在这里偶然发现。似乎“ IIS不区分大小写”(在其他线程中多次提到)之类的短语是如此广泛,以至于人们普遍认为IIS上的URL 始终不区分大小写-至少我得到的印象是-似乎根本不是这样。
MrWhite

4

这是Google存档的实时聊天会话中的职位(该链接现已失效):

* URL大小写不一致会导致重复的内容问题和页面排名降低吗?例如,www.site.com / abc与www.site.com/Abc。在Windows主机上,这些页面是同一页面,但在Unix主机上是不同的页面。

JohnMu:John,您好,根据现有的标准,URL区分大小写,因此,可以将它们视为单独的URL。由于网址上的内容相同,因此我们通常会认识到这一点,只保留其中之一。但是,我们建议您尝试使所有链接都转到该URL的一个版本。请记住,这也适用于robots.txt文件。*

IE小组建议选择文件大小写约定并严格遵守该约定,因为它可以提高性能。


-2

RFC 3986 6.2.2.1将URI定义为不区分大小写,因此像wordpress.org一样使它们区分大小写不是一个好主意。


但这不会导致重复的内容吗?

实际上不是,因为搜索引擎也应该不区分大小写。

我想现在的问题是如何确定搜索引擎是否将大写和小写的URL视为等同?以Google为例:试试google.com/Doodlesgoogle.com/doodles

10
RFC仅解决URL的三个部分的情况。1-协议(http://)-不区分大小写,标准化为小写。2-主机名(example.com)-不区分大小写,标准化为小写。3.百分比编码字符(%3F)-不区分大小写,标准化为大写。URL的其余部分通常区分大小写
Stephen Ostermiller
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.