15

我用 PHP 编写了自己的 MVC 框架,它使用以下格式的 url:

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

我已经做到了,因此可以忽略“默认”方法(默认情况下index()),因此这会导致 URL 像/controller//param1/param2/param.... 例如,一个 URL:/view//panel-glide/3index('panel-glide', 3)view控制器中调用。

这很好用,但我担心搜索引擎或一些较旧的浏览器在看到双斜杠时可能会吓坏,因为我认为我以前从未真正使用过它们。

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

4

2 回答 2

17

WebMasters 上有一个现有的答案,讨论了有两个斜线的危险。它讨论了很多 Apache,但这些想法应该是普遍适用的。

本质上,我认为不推荐。/foo/bar而且/foo//bar真的应该是两条完全不同的路。每个斜线都很重要,规避标准化的尝试必然会反过来咬你。

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

另外,我认为这看起来很有趣。

于 2012-06-29T04:56:03.817 回答
3

Apache 将多个斜杠视为一个斜杠。这会影响诸如 之类的事情RewriteRules,例如,如果您有这样的规则:

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

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

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

于 2012-06-29T04:58:20.953 回答