2016-02-12 210 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