2013-07-11 58 views
0

如果尚未創建新圖像大小,我嘗試爲一些傳統圖像提供服務。mod_rewrite:「%{REQUEST_FILENAME}!-f」始終爲真

我的問題是,即使存在新版本,舊版本也始終得到服務。

實施例:

  • foobar.png =>是本
  • n1_foobar.png =>不存在
  • b_foobar.png =>是本
  • b2_foobar.png =>是本

所有文件都在「/ sub/dir/123 /」中。 「123」可以根據提供的頁面進行更改。

它的工作意味着「foobar.png」服務,然後我請求「n1_foobar.png」。 但是當我請求「b2_foobar.png」時它也會服務於「b1_foobar.png」,而它不應該。

我想我錯過了一些標誌?

這是我的代碼:

<IfModule mod_rewrite.c> 
    # Options -MultiViews 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)\/n1_(.*)$ $1/$2 [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)\/b2_(.*)$ $1/b_$2 [L] 
</IfModule> 

謝謝!

解決:

,因爲我是添加規則,我的虛擬主機配置,而不是一個「的.htaccess」我是缺少‘%{DOCUMENT_ROOT}’

,這是固定的規則集,其作品:

RewriteEngine on 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\/n1_(.*)$ $1/$2 [L] 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\/b2_(.*)$ $1/b_$2 [L] 

編輯:添加目錄INFO1 編輯:解決我自己的愚蠢

(有沒有辦法刪除尷尬的問題?)

回答

0

試試這個修改後的版本。

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/n1_(.+)$ /$1/$2 [L,NC] 

RewriteRule ^([^/]+)/b2_(.+)$ /$1/b_$2 [L,NC] 
+0

它不工作:(「n1_foobar.jpg」不提供早餐。 – Sebastian

+0

另外,如果我將文件移動到根目錄下你的解決方案是行不通的。「n1_foobar.jpg」不受「foobar的服務。 jpg「 – Sebastian

+0

什麼是您的圖片的完整URL? – anubhava

相關問題