如果文件夹名称设置为 "myfolder/",则重写规则不匹配



自从我们迁移到新服务器以来,我们的一些页面被破坏了(404)。原因是我们有 2 条被破坏的重写规则。真正奇怪的是,如果我更改文件夹的名称,它们就会起作用。例如这项工作:

RewriteRule ^anything/([a-zA-Z0-9-]+)/$ page.php?var=$1 [L]

这不会:

RewriteRule ^myfolder/([a-zA-Z0-9-]+)/$ page.php?var=$1 [L]

我什至找不到进行 301 重定向的技巧,因为我原来的"myfolder/"虚拟文件夹永远不匹配。

知道发生了什么吗?我认为这可能是规则覆盖或类似的东西(因为它托管在多点解决方案上),但我的主站点根目录下没有这样的规则。这让我发疯。感谢!

在实践中,

你可能想做两件事。禁用多视图,如果请求是真实目录,则还要绕过规则。

Options -MultiViews #turn off automatic URI matching, can cause weirdness
RewriteEngine on
#stop here if the request is a real file or directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^myfolder/([a-zA-Z0-9-]+)/?$ /page.php?var=$1 [L]

最新更新