我正在尝试使用.htaccess规则来防止某些静态文件通过我的PHP前端控制器,但它似乎不起作用。规则如下:为什么这个RewriteCond跳过静态文件类型不工作?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
# Don't try to pipe static files through php
RewriteCond %{REQUEST_URI} !^(.*)\.(png|jpg|jpeg|gif|js|css|json|mp3|mp4|mov|ogv|ogg|ico)$ [NC]
RewriteCond %{REQUEST_URI} !/wrapper/index\.php
RewriteRule ^(.*)$ /wrapper/index.php [L]
</IfModule>
尽管跳过带有特定扩展名的文件,如果我每次都打https://example.com/test.jpg
请求仍通过管道输送的/wrapper/index.php
条件。
我想这种变化只是为了测试,并没有工作,要么:
RewriteCond %{REQUEST_URI} (.+)\.(png|jpg|jpeg|gif|js|css|json|mp3|mp4|mov|ogv|ogg|ico) [NC]
RewriteRule ^(.*)$ $1 [L]
RewriteCond %{REQUEST_URI} !/wrapper/index\.php
RewriteRule ^(.*)$ /wrapper/index.php [L]
没有什么在Apache的错误日志说明问题。也许我的头脑在工作中很漫长,但我一直无法找到我的重写条件中的缺陷。感谢您的帮助。
感谢你的想法,但我很伤心地报告你的修改条件没有改变。 –
我衷心感谢这一努力,但它仍然没有任何区别。 –
好吧,更新后的答案实际上已经过测试(除了向静态文件列表添加“txt”扩展名)并且它按预期工作。这是你的.htaccess文件的全部内容吗? –