Regex 如何使用htaccess检查文件的缓存版本是否存在?
我使用以下代码重写对动态生成的PHP页面的gzip、缓存静态版本的页面请求。我有两个问题:Regex 如何使用htaccess检查文件的缓存版本是否存在?,regex,.htaccess,rewrite,Regex,.htaccess,Rewrite,我使用以下代码重写对动态生成的PHP页面的gzip、缓存静态版本的页面请求。我有两个问题: RewriteCond %{REQUEST_URI} !^/?cache/ [NC] RewriteRule ^/?(.)(.*?)/?$ /cache/$1/$1$2.html.gz [L] 首先,我只希望在缓存文件确实存在的情况下,此规则才生效 其次,我需要确保浏览器得到指示,这是一个gzip文件,应该解压缩、读取和显示,而不是像当前正在发生的文件那样下载 页面的url结构如下所示: http://
RewriteCond %{REQUEST_URI} !^/?cache/ [NC]
RewriteRule ^/?(.)(.*?)/?$ /cache/$1/$1$2.html.gz [L]
http://mydomain.com/newest-coupon-codes/
它需要在不将地址栏更改为文本的情况下向用户显示以下页面:
http://mydomain.com/cache/n/newest-coupon-codes.html.gz
解决方案#1:
ForceType文本/html
标题集内容编码:gzip
重新启动发动机
重写基/
重写条件%{QUERY\u STRING}!\?
重写条件%{REQUEST_URI}!^/?缓存/[NC]
重写条件%{REQUEST_URI}^/?(.)(.*)/$
重写条件缓存/%1/%1%2.html.gz-f
重写规则^/?()(.*?/?$/cache/$1/$1$2.html.gz[L]
解决方案#2:
ForceType文本/html
标题集内容编码:gzip
重新启动发动机
重写基/
重写条件%{QUERY\u STRING}!\?
重写条件%{REQUEST_URI}!^/?缓存/[NC]
RewriteCond%{REQUEST_URI}^/?(。*?/?$[E=CACHE:“CACHE/$1/$1$2.html.gz”,NE]
RewriteCond%{ENV:CACHE}-f
重写规则^/?()(.*?/?$/cache/$1/$1$2.html.gz[E=!cache,L]
@NicholasCardot-请删除上面的所有评论,因为它们现在已经无关紧要了
<FilesMatch "\.html\.gz$">
ForceType text/html
Header set Content-Encoding: gzip
</FilesMatch>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !\?
RewriteCond %{REQUEST_URI} !^/?cache/ [NC]
RewriteCond %{REQUEST_URI} ^/?(.)(.*?)/?$
RewriteCond cache/%1/%1%2.html.gz -f
RewriteRule ^/?(.)(.*?)/?$ /cache/$1/$1$2.html.gz [L]
<FilesMatch "\.html\.gz$">
ForceType text/html
Header set Content-Encoding: gzip
</FilesMatch>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !\?
RewriteCond %{REQUEST_URI} !^/?cache/ [NC]
RewriteCond %{REQUEST_URI} ^/?(.)(.*?)/?$ [E=CACHE:"cache/$1/$1$2.html.gz",NE]
RewriteCond %{ENV:CACHE} -f
RewriteRule ^/?(.)(.*?)/?$ /cache/$1/$1$2.html.gz [E=!CACHE,L]