Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用htaccess检查文件的缓存版本是否存在?_Regex_.htaccess_Rewrite - Fatal编程技术网

Regex 如何使用htaccess检查文件的缓存版本是否存在?

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://

我使用以下代码重写对动态生成的PHP页面的gzip、缓存静态版本的页面请求。我有两个问题:

RewriteCond %{REQUEST_URI} !^/?cache/ [NC]
RewriteRule ^/?(.)(.*?)/?$ /cache/$1/$1$2.html.gz [L]
  • 首先,我只希望在缓存文件确实存在的情况下,此规则才生效
  • 其次,我需要确保浏览器得到指示,这是一个gzip文件,应该解压缩、读取和显示,而不是像当前正在发生的文件那样下载
  • 页面的url结构如下所示:

    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]