繁体   English   中英

在URL中使用双斜线是否有任何缺点?

[英]Are there any downsides to using double-slashes in URLs?

我在PHP中编写了自己的MVC框架,它使用的格式为:

/controller/method/param1/param2/param...

我已经这样做了“默认”方法可以被忽略(默认情况下是index() ),所以这会产生像/controller//param1/param2/param...这样的URL。 例如,URL: /view//panel-glide/3将在view控制器中调用index('panel-glide', 3)

这工作得很好,但是我担心搜索引擎或者一些旧的浏览器在看到双斜线时可能会发疯,因为我认为我实际上看起来并没有像以前那样使用它们。

有人知道我可能遇到的任何问题吗?

WebMaster上有一个现有的答案,讨论了有两个斜杠危险 它讨论了很多Apache,但这些想法一般都适用。

从本质上讲,我不认为这是推荐的。 /foo/bar/foo//bar应该是两个完全不同的路径 每个斜杠都很重要,试图规避标准化的做法必然会让你感到困惑。

正如答案中提到的,相对路径失败也存在非常现实的危险。 有些浏览器会正确地确定来自/foo/bar//baz的相对路径../../fizz/foo/bar/fizz ,而其他浏览器会将双斜杠视为单个斜杠,并选择/foo/fizz

另外,我觉得它看起来很有趣。

Apache将多个斜杠视为单斜杠。 这会影响RewriteRules ,例如,如果你有这样的规则:

RewriteRule ^user/(.*)/([0-9]+)$ /user.php?id=$2 [QSA,L]

这将捕获诸如user/nomaD/500链接,但它不会捕获user//500因为它将其视为user/500

换句话说,我不认为你的设置会起作用,因为它会将 param1视为 method并将所有参数移位,除非它们属于特定类型。 我想这不会影响你的具体情况,但在很多情况下,这将是使用//的缺点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM