htaccess 设置环境变量

htaccess setting environment variable

我正在尝试让以下代码正常工作,但似乎从未设置环境变量 SETEXPIRE。如果我删除 IfDefine SETEXPIRE 部分它可以工作,但我需要那个部分。

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=&%{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 之一并且在查询中设置了键 _,我想做的是设置过期 header字符串

感谢迈克,我找到了解决方案:

 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=&%{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