【问题标题】:Relative URLs and trailing slashes相对 URL 和尾部斜杠
【发布时间】:2011-07-24 09:27:01
【问题描述】:

我之前在网上浏览过这个问题,我怀疑答案是“你不能”,但由于我还没有找到一个确定的答案,所以我认为值得在这里提问。我发现最接近这个问题的是The mystery of the trailing slash and the relative url(目前已关闭,但谷歌有a text-only cached version)。

由于传统的设计,带有斜杠的 URL 被解释为目录,而没有斜杠的 URL 被解释为文件资源,而相对 URL 在目录之外工作,那么如果当前页面的路径为

/lorem/ipsum/dolor

相对路径

not-dolor

将解析为

/lorem/ipsum/not-dolor

这自然是有道理的,当/lorem/ipsum/dolor 被视为文件资源dolor 时,位于目录/lorem/ipsum/ 中;典型的、直观的约定。然而,由于现在有大量网站是动态应用程序,每个 URL 都没有文件系统映射,这可能会让人头疼,因为有时你真的想相对于路径工作,就好像在当前设计中,有一个尾部斜杠。

是否有任何合理的方式(“不涉及服务器端处理/变量/其他,或 JavaScript”)使用基于当前路径的相对路径,不是的“目录”当前路径?这样not-dolor 可以相对于/lorem/ipsum/dolor 并产生

/lorem/ipsum/dolor/not-dolor

据我所知,没有涉及./not-dolor 之类的解决方法,因为. 仍然是(/lorem/)ipsum/。缺少重定向到尾部斜杠并确保所有资源都有对应于目录和文件性质的 URL,或者修改规范(!),有没有办法解决这个问题?

【问题讨论】:

标签: html url relative-path


【解决方案1】:

没有。

问题与导演/文件映射没有太大关系(从未预料到映射会如何发生,只允许作为方便的映射,这仍然通常很方便)。

这与dolordolor/ 不同的简单事实更相关,并且您希望从相对于dolor/ 的引用中提供一个新的URI,当组合到一个以dolor 结尾时。

可能的解决方案是始终使用/lorem/ipsum/dolor/。也就是说,根本不谈/lorem/ipsum/dolor,只谈/lorem/ipsum/dolor/。毕竟,正如您所说,由于目录/文件映射不是唯一的做事方式,因此您的资源名称没有理由不总是以斜杠结尾。

确实,这可能更有意义,因为在使用此类相对链接时,您暗示/lorem/ipsum/dolor/not-dolor/lorem/ipsum/dolor 之间存在某种关系。现在,虽然/lorem/ipsum/dolor/not-dolor 可能与/lorem/ipsum/dolor/ 没有太大关系,但暗示它可能存在于 URI 中(是的 URI 是不透明的,但虽然它们在某些级别上必须被视为不透明,但它们是 允许反映关系,这正是相对 URI 引用有意义的原因)。因此,可以说,/lorem/ipsum/dolor/ 更清楚地反映了您的整体 URI 到资源的映射(如果没有,那么您无论如何都不想从 dolor 变为 not-dolor)。

现在,这归结为重定向到一个斜杠,你说你想避免(或者更好的是,从一开始就不要引导某人到dolor),但现在它的优势似乎不仅仅是方便更简单的相对 URI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2013-11-21
    • 1970-01-01
    • 2018-10-19
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多