我需要Apache中的一個規則,該規則將未找到的CSS文件根據其名稱在另一個文件夾中的名稱重定向到另一個位置。就像這樣:當css不存在時Apache重寫條件回退
- 請求:
localhost/css/nonexistent.css
- 響應:
localhost/css/g/nonexistent.css
如果CSS存在,只是服務於它像正常:
- 請求:
localhost/css/existent.css
- 響應:
localhost/css/existent.css
我的項目是介紹CakePHP的默認情況下自帶的規則如下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
我提到它,因爲任何新的規則,它不應該打破蛋糕的規則。
感謝您的幫助。
編輯:忘記提及的是,css/g/
文件是腳本的別名(蛋糕MVC堆棧內),其摹 enerates新的CSS文件,並呼應它。到目前爲止的答案似乎做重定向罰款,但它不找到css/g/file.css
要麼因爲它確實不存在。
應該指出的是(據我所知,RewriteRule),RewriteCond永遠不會到達,並且可以被刪除。這是因爲規則行會匹配任何請求('^(。*)$')並且標記爲[L](最後一條規則,停止處理)。這意味着:1。您可以刪除最後一行(RewriteCond ...)和2.此問題的解決方案屬於* RewriteEngine行和現有的RewriteRule行之間,並且除非您希望請求*不是[L]標誌*通過Cake(看起來像Cake想要他們,這很常見)。 – 2012-07-13 07:27:06
@ctrahey我不好,我爲Cake貼了一套錯誤的規則,我只是用真正的問題編輯了這個問題。感謝您的評論,但是,它清除了一些事情 – luchomolina 2012-07-13 14:04:06