【问题标题】:Optional trailing slash in url in url-config of web-site网站 url-config 中 url 中的可选斜杠
【发布时间】:2026-01-08 06:45:01
【问题描述】:

如果我定义像 "^optional/slash/?&" 这样的 url - 并且它所绑定的网页将在两个 url 版本中都可用 - 有斜线和没有 - 我这样做会违反任何约定或标准吗?

【问题讨论】:

  • 我不确定我是否理解您要完成的工作。你是说你希望http://example.com/somepage/ 等同于http://example.com/somepage
  • @BigMacAttack 完全正确!

标签: web-services http rest url web


【解决方案1】:

重定向不是更合适吗?

如果我没记错的话,尾部斜杠应该与列出其他资源的资源一起使用。就像列出文件的目录、文章列表或类别查询(例如http://www.example.com/category/cakes/)。没有尾部斜杠的 URI 应该指向单个资源。像文件、文章或带有参数的复杂查询(例如http://www.example.com/search?ingredients=strawberry&taste=good

只需使用 HTTP 代码 302 FOUND 将拼写错误重定向到正确的 URI。

编辑:感谢 AndreD 指出,HTTP code 301 MOVED PERMANENTLY 更适合 permanently 别名错别字。搜索引擎和其他客户端在获得一次 301 代码和Google recommends using it for changing the URL of a page in their index 后,应停止查询拼写错误的 URL。

【讨论】:

  • 为什么推荐302而不是301?
  • @AndreD 是的,我现在明白了。在这个outdated HTTP document 中,我读过它使 302 代码似乎更适合别名 URL。然而,这更多up-to-date HTTP document 他们的使用变得更好定义。我被代码的昵称误导了。
【解决方案2】:

根据RFC 3986: Uniform Resource Identifier (URI): Generic Syntax:
第 6.2.4 节。基于协议的规范化 -
“减少假阴性发生率的巨大努力是 对于网络蜘蛛来说通常具有成本效益。因此,他们甚至实施 URI 比较中更激进的技术。例如,如果他们 观察一个URI,例如
http://example.com/data
重定向到仅在尾部斜杠不同的 URI
http://example.com/data/
他们将来可能会认为这两者是等价的。这 仅当等价明确时才适用 由访问资源的结果和 他们方案的解引用算法的通用约定(在此 在这种情况下,HTTP 源服务器使用重定向来避免问题 有相对引用)。”

我对此声明的解释是,使两个 URI 在功能上等效(例如,通过 .htaccess 语句、重定向或类似的方式)不会违反任何标准约定。根据 RFC,如果 Web 蜘蛛指向相同的资源,它们会在功能上等同对待它们。

【讨论】:

  • 我一直听说一个规范的 URL 对 SEO 很重要:moz.com/blog/… 我一直想知道为什么蜘蛛不能只吃这两个;我猜他们会...
【解决方案3】:

不,您这样做并没有违反任何标准,您可以在网站的 URL 中使用此可选的尾随斜杠 但您需要保持安全,因为服务器处理问题的方式不同:

  • 有时,这对 SEO 无关紧要:许多 Web 服务器只会使用 301 状态代码重定向到默认版本;
  • 某些网络服务器可能会为非尾部斜杠地址返回 404 页面 = 浪费链接汁和努力;
  • 一些网络服务器可能会返回 302 重定向到正确的版本 = 浪费链接汁和努力;
  • 一些网络服务器可能会为两个版本返回 200 响应 = 浪费的链接汁和努力以及潜在的重复内容问题。

【讨论】: