所以我有一个使用这种类型输入的定制网站:
example.com/?id=4e2dc982
或者这也可以:
example.com/index.php?id=4e2dc982
但现在我开始在我的日志中看到来自 GoogleBot 的命中,因为某种原因试图检索它:
example.com/index.php/?id=4e2dc982
更糟糕的是,这确实有效,它使用正确的 GET 参数拉取页面,但由于额外的“/”,所有链接和引用都不起作用。当它尝试加载“image.jpg”而不是加载正确的“example.com/image.jpg”时,它会尝试加载“example.com/index.php/image.jpg”。我如何最好地解决这个问题?我知道我可以返回并替换每个链接以使用绝对路径,但这很愚蠢。带有额外“/”的链接首先不应该工作。
更新:
我找到了修复程序,但仍然不知道为什么甚至允许这样做。我去了:
http://ca1.php.net/manual-lookup.php?pattern=test
并尝试查看以下是否可行,果然可行:
http://ca1.php.net/manual-lookup.php/?pattern=test
但是他们的页面没有中断。所以我看了看,发现了原因:
<base href="http://ca1.php.net/manual-lookup.php" />
所以基本上,任何 PHP 脚本似乎都接受额外的 /,但如果你没有将所有链接编码为具有绝对路径或使用基本标签,那么只要有人添加额外的“/”,你的网站就会被搞砸。