mik*_*ike 12 apache mod-rewrite caching mod-headers
我想根据访问的路径文件有条件地设置缓存头.基本上,访问http://www.example.com/cache/$cache_key/*应该在将来的缓存头中提供远远的文件.
我正在使用重写规则来设置环境变量,然后尝试根据该变量设置缓存控制标头.但是,看起来这个变量在这个过程中设置的时间太晚了; 条件头规则永远不会被执行.
RewriteRule ^cache/.*?/(.*) /$1 [env=asset:true,L]
Header set Cache-control "max-age=30"
Header set Cache-Control "max-age=31536000" env=asset
Header unset ETag env=asset
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?我尝试了目录和位置块的几种组合但没有成功.
Kev*_*ker 20
使用phpinfo()我确定环境变量最终没有在重写的请求上设置,所以问题不是请求的顺序,而是它似乎将变量抛出.使用查询字符串而不是URL而不是重写似乎是我能够使用它的唯一方法.我同意,似乎应该有更好的方法.
RewriteCond %{QUERY_STRING} longcache=true(&|$)
RewriteRule .* - [ENV=LONGCACHE:true,L]
Header set Cache-Control "max-age=30" env=!LONGCACHE
Header set Cache-Control "max-age=31536000" env=LONGCACHE
Run Code Online (Sandbox Code Playgroud)
打开眼睛获得更多不同的答案:
您的asset环境变量REDIRECT_asset在重定向后重命名为,因此您的条件Header指令必须是:
Header set Cache-Control "max-age=31536000" env=REDIRECT_asset
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7092 次 |
| 最近记录: |