为了账号安全,请及时绑定邮箱和手机立即绑定

Htaccess 第二个重写规则不适用于生产

Htaccess 第二个重写规则不适用于生产

PHP
慕的地8271018 2023-10-01 10:05:06
最奇怪的事情。两个重写规则都在我们的测试服务器上运行,但第二个规则locations在生产服务器上不起作用,并且由于某种原因/在末尾添加了一个locations/。两台服务器上的配置相同。我正在尝试简化 URL,而不重命名文件。这样,如果用户输入,site.php/locations它将加载重定向页面的内容,但保留简化的 URL关于为什么locations重定向不起作用的任何想法?RewriteEngine onRewriteBase /// The next two are statements are just for context. They preceded the faq and locations forward RewriteCond %{REQUEST_URI} ^/index.php$RewriteRule (.*) / [R=301,L]// The two rewrites that I wantRewriteRule ^faq$ /faq-mailbox-account.php [NC,L]RewriteRule ^locations$ /choose-digital-mailbox-location.php [NC,L]
查看完整描述

2 回答

?
qq_花开花谢_0

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- 否则,您发布的指令没有希望起作用,因为它们根本不匹配。


查看完整回答
反对 回复 2023-10-01
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

该问题是由于 Prod 上的符号链接驱动器造成的



查看完整回答
反对 回复 2023-10-01
  • 2 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信