这是我的.htaccess文件:
?url=filename.png
我希望这会加载文件或目录(如果存在),否则请遵循最后一条规则。
但是,如果文件或目录存在,它无法工作并在/filename.png
下加载它(当它应该加载document.getElementByName
时)。
我做错了什么?
答案 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]