我正在嘗試使用.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文件的全部內容嗎? –