2 回答
TA贡献1835条经验 获得超7个赞
...在生产中并由于某种原因
/
在末尾添加了一个locations/
locations
如果作为文件系统上的物理目录存在,就会发生这种情况。(或者存在并且响应被缓存。)
如果您请求/locations
并/locations
作为物理目录存在,则 mod_dir 将发出 301 外部重定向以附加尾部斜杠 - 通常,这是“修复”URL 所必需的。
无论您的规则是否匹配*1 , mod_dir 都会发生这种外部“重定向” ,因为它“只是”内部重写而不是另一个重定向。(*1事实上,它确实匹配并且重写确实发生,但它被 mod_dir 重定向有效地覆盖。)
您可以在您的模式中附加一个可选的斜杠,例如。- 但如果您请求的末尾没有斜杠,重定向仍然会首先发生。您需要请求一个已包含尾部斜杠的 URL。RewriteRule
^locations/?$
/locations
您可以使用 来阻止 mod_dir 附加尾部斜杠DirectorySlash Off
,但是,这可能会对您的系统产生其他影响。
另请注意,由于这是 301(永久)重定向,因此您的浏览器可能会永久缓存它。因此,如果该/locations
目录已在服务器上删除,浏览器仍将重定向用户,直到所有客户端缓存也被清除。
两台服务器上的配置相同。
那么,两台服务器上都有(或曾经)有一个目录吗?/locations
如果两台服务器上的配置相同,那么您将得到相同的响应,因此一定存在一些差异。或者,存在客户端缓存问题。
这样如果用户输入
site.php/locations
我认为您的意思是site.com/locations
- 否则,您发布的指令没有希望起作用,因为它们根本不匹配。
- 2 回答
- 0 关注
- 82 浏览
添加回答
举报