W3TC页面缓存URL重写不起作用

时间:2016-08-10 00:03:14

标签: wordpress apache .htaccess caching w3-total-cache

我无法让W3tC页面缓存工作。我检查了重写规则,它们都在我的vps服务器上设置。我最近通过Digital Ocean设置了vps服务器。

我得到的错误是:

  

W3 Total Cache错误:显示页面缓存URL重写不起作用。请验证服务器配置是否允许.htaccess   遗憾的是,如果没有自定义重写规则,磁盘增强页面缓存将无法运行请咨询服务器管理员以获取帮助。另请参阅服务器规则的安装页面。

技术信息是 .htaccess文件包含重写URL的规则。 该插件向https://example.com/w3tc_rewrite_test提出请求但收到: 找不到404而不是" OK"响应。

3 个答案:

答案 0 :(得分:0)

使用root / .htaccess

中的代码进行测试
# BEGIN W3TC Browser Cache  
 <IfModule mod_rewrite.c>
<IfModule mod_deflate.c>
  <IfModule mod_headers.c>
     Header append Vary User-Agent env=!dont-vary  
   </IfModule>
     AddOutputFilterByType DEFLATE text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon application/json  
   <IfModule mod_mime.c>
     # DEFLATE by extension  
     AddOutputFilter DEFLATE js css htm html xml  
   </IfModule>  
 </IfModule>
 # END W3TC Browser Cache  
 # BEGIN W3TC Page Cache core  
 <IfModule mod_rewrite.c>
   RewriteEngine On  
   RewriteBase /  
   RewriteRule ^(.*/)?w3tc_rewrite_test/?$ $1?w3tc_rewrite_test=1 [L]  
   RewriteCond %{HTTP:Accept-Encoding} gzip  
   RewriteRule .* - [E=W3TC_ENC:_gzip]  
   RewriteCond %{HTTP_COOKIE} w3tc_preview [NC]  
   RewriteRule .* - [E=W3TC_PREVIEW:_preview]  
   RewriteCond %{REQUEST_METHOD} !=POST  
   RewriteCond %{QUERY_STRING} =""  
   RewriteCond %{REQUEST_URI} /$  
   RewriteCond %{HTTP_COOKIE} !(comment_author|wp-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC]  
   RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_PREVIEW}.html%{ENV:W3TC_ENC}" -f  
   RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index%{ENV:W3TC_PREVIEW}.html%{ENV:W3TC_ENC}" [L]  
 </IfModule>  
 # END W3TC Page Cache core  
 # BEGIN WordPress  
     <IfModule mod_rewrite.c>
         RewriteEngine On  
         RewriteBase /  
         RewriteRule ^index.php$ - [L]  
         RewriteCond %{REQUEST_FILENAME} !-f  
         RewriteCond %{REQUEST_FILENAME} !-d  
         RewriteRule . /index.php [L]  
     </IfModule>
 # END WordPress

答案 1 :(得分:0)

这是对@h2kyaw 的简短回答。如果在 .htaccess root 目录中添加以下行就足够了。

<IfModule mod_rewrite.c>

    RewriteRule ^(.*\/)?w3tc_rewrite_test([0-9]+)/?$ $1?w3tc_rewrite_test=1 [L]

</IfModule>

答案 2 :(得分:0)

此错误是由“.htaccess”中出现的规则顺序引起的,请确保 WordPress 的规则出现在 W3TC 规则之后。

#...
# END W3TC Page Cache core

所以

最终的 .htaccess 文件结构应该是这样的

# BEGIN W3TC Browser Cache
 
......
 
# END W3TC Browser Cache

# BEGIN WordPress
.....

# END WordPress

这是一种经过测试的方法,效果很好。谢谢。

来源:Fix – W3 Total Cache error: It appears Page Cache URL rewriting is not working – Easy Method