我以前在网上看过这个,我怀疑答案是“你不能”,但由于我还没有找到一个明确的答案,我认为这里值得一提。我发现最接近问题的是The mystery of the trailing slash and the relative url(目前已关闭,但Google有a text-only cached version)。
由于URL的传统设计将尾部斜杠解释为目录,而没有尾部斜杠的URL被解释为文件资源,并且相对URL工作在目录之外,如果当前页面的路径为< / p>
/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,或者修改规范(!),是否有任何方法可以解决这个问题?
答案 0 :(得分:16)
没有
问题与导演/文件映射没有太大关系(从未预料到映射会如何发生,只允许作为方便的映射,这通常很方便)。
这与dolor
与dolor/
不同的简单事实更相关,并且您希望在结合到一个结尾时从相对于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。