当文件夹名称等于现有文件名时,如何执行RewriteRule?

时间:2014-02-17 15:53:11

标签: apache .htaccess mod-rewrite

给出以下文件夹“de”:

.
..
index.php
faq.php

如果我尝试从我的.htaccess(在父目录中)触发RewriteRule,如下所示:

Options +FollowSymlinks
RewriteEngine on

RewriteBase /
RewriteRule ^de/test/ de/faq.php [NC,L]

...它完全正常,但如果我这样试试:

Options +FollowSymlinks
RewriteEngine on

RewriteBase /
RewriteRule ^de/faq/ de/faq.php [NC,L]

然后Apache返回“404 Not found”而不是触发RewriteRule。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

Options +FollowSymLinks -MultiViews

如果启用了MultiViews,它将尝试搜索类似的文件和文件夹,从而为什么规则不起作用,当你禁用它时,它会停止这样做,这就是它工作的原因。

要进行更深入的调查,您可以在网络服务器中启用RewriteLog

RewriteLog "/some/path/to/file/rewrite.log"
RewriteLogLevel 3

通过这种方式,您可以查看启用和禁用MultiView时的行为方式和查找内容。