2016-02-12 325 views
0

我試圖讓下面的代碼工作,但似乎從未設置環境變量SETEXPIRE。如果我刪除它的作品IfDefine SETEXPIRE部分,但我需要那部分。htaccess設置環境變量

Options +FollowSymLinks -MultiViews 

# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} (^|&)_=(.*) 
RewriteRule .* - [E=SETEXPIRE:yes] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^html/(.*?)$ index.php?url=$1&%{QUERY_STRING} [L,NC] 

<IfDefine SETEXPIRE> 
    <filesMatch "(?!\.(png|jpe?g|css|js|gif))$"> 
     <IfModule mod_expires.c> 
      ExpiresActive On 
      ExpiresDefault "access plus 3 months" 

      <IfModule mod_headers.c> 
       Header set Cache-Control "max-age=2592000, public, no-transform" 
       Header set pragma "" 
      </IfModule> 
     </IfModule> 
    </filesMatch> 
</IfDefine> 

任何幫助,將不勝感激。

什麼即時試圖做的是設置過期頭,如果請求的文件擴展名是PNG之一|?JPE G | CSS | JS | GIF和關鍵_在查詢字符串設置

+1

我不認爲'IfDefine'檢查環境變量。它檢查命令行開關定義。所以它會起作用,例如,如果你的服務器是用'-D SETEXPIRE'開關啓動的(以此爲例來說明我是如何理解它的工作的)。 –

+0

嗨邁克... thnx的快速答案...你有任何想法我的代碼工作? – user2083317

+0

嗯,我並不完全確定你要在這裏做什麼,說實話。請你能解釋一下嗎? –

回答

0

日Thnx邁克我找到了解決辦法:

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

RewriteCond %{QUERY_STRING} (^|&)_=(.*) 
RewriteCond %{QUERY_STRING} !(^|&)_=0(&|$) 
RewriteRule .* - [E=SETEXPIRE:yes] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^html/(.*?)$ index.php?url=$1&%{QUERY_STRING} [L,NC] 

<filesMatch "(?!\.(png|jpe?g|css|js|gif))$"> 
     Header set Cache-Control "max-age=2592000, public, no-transform" env=SETEXPIRE 
     Header set pragma "" env=SETEXPIRE 
    </filesMatch> 

歡呼 c_bb