如果文件夹名称设置为“myfolder /”,则RewriteRule不匹配

时间:2017-01-13 21:37:47

标签: .htaccess redirect mod-rewrite url-rewriting

由于我们迁移到新服务器,因此我们的某些页面被破坏(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 /”虚拟文件夹从不匹配。

任何想法发生了什么?我认为这可能是一个规则覆盖或类似的东西(因为它托管在多功能解决方案上),但我的主站点根本没有这样的规则。它让我疯狂。 THX!

1 个答案:

答案 0 :(得分:2)

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

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]