RewriteCond没有完成规则

时间:2015-11-03 16:56:46

标签: .htaccess mod-rewrite

这是我的.htaccess文件:

?url=filename.png

我希望这会加载文件或目录(如果存在),否则请遵循最后一条规则。

但是,如果文件或目录存在,它无法工作并在/filename.png下加载它(当它应该加载document.getElementByName时)。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是因为RewriteCond仅适用于下一个RewriteRule并非所有规则。您必须使用!-f!-d来避免匹配文件和目录。

您可以使用:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !(abcdefg) index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

或者更好的一个:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule !(abcdefg) index.php [L]

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]