這是我的.htaccess
文件。如果url匹配,它應該從assets
文件夾傳送靜態文件。否則,一切都應該重定向到index.php
。爲什麼mod_rewrite忽略我的[L]標誌?
請注意,url不包含assets
as segemnt here。所以example.com/css/style.css
指向assets/css/style.css
。
RewriteEngine on
# disable directory browsing
Options -Indexes
# static assets
RewriteCond %{DOCUMENT_ROOT}/assets/$1 -f
RewriteRule ^(.*)$ assets/$1 [L]
# other requests to index.php
RewriteRule !^asset/ index.php [L]
遺憾的是,類似的URL也example.com/assets/css/style.css
提供的文件,因爲對我的規則,網址均不適用,並應用於Apache的默認行爲,它提供的文件。
所以我試着改變最後一行。我認爲這是可行的,因爲上面的規則中的[L]
標誌應該停止執行資產網址並投放它們。
RewriteRule ^(.*)$ index.php [L]
取而代之的是,並非所有的請求重定向到index.php
,甚至像example.com/css/style.css
靜態資產。爲什麼標誌不停止執行重寫規則以及誰來解決我的問題呢?