我有一个.htaccess文件,如下所示:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ index.php [NC,L]
我的网页目录中有这个文件。如果有文件,有没有办法强制这条规则停止重写?
例如:我有一个css / style.css文件,但服务器返回404,因为mod_rewrite规则有效。如果我关闭mod_rewrite,则找到该文件。
答案 0 :(得分:7)
是的,有:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]
RewriteRule ^assets/(.*)$ public/assets/$1 [L]
</IfModule>
第一个条件块和第一个规则适用于现有文件和文件夹,第二个规则适用于在没有文件或文件夹时应该发生的实际重写。
答案 1 :(得分:7)
信用转到http://amandine.aupetit.info/135/apache2-mod_rewrite/
对于虚拟主机,%{REQUEST_FILENAME}
与文件系统相关的文件路径不匹配,因此您必须使用:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
或使用!-f
的等效语法,无论您喜欢哪种语法。