1

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

我得到的错误是:

W3 Total Cache 错误:页面缓存 URL 重写似乎不起作用。请验证服务器配置是否允许 .htaccess 不幸的是,如果没有自定义重写规则,磁盘增强页面缓存将无法运行。请向您的服务器管理员寻求帮助。另请参阅安装页面以了解您的服务器的规则。

技术信息是 .htaccess 文件包含重写 URL 的规则。插件发出请求https://example.com/w3tc_rewrite_test但收到:404 Not Found 而不是“OK”响应。

4

3 回答 3

1

在您的 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
于 2018-04-25T17:32:22.937 回答
0

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

#...
# END W3TC Page Cache core

所以

最终的 .htaccess 文件结构应该像

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

# BEGIN WordPress
.....

# END WordPress

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

来源:修复 - W3 Total Cache 错误:似乎页面缓存 URL 重写不起作用 - 简单方法

于 2021-05-29T10:08:13.517 回答
0

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

<IfModule mod_rewrite.c>

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

</IfModule>
于 2021-01-29T13:52:32.430 回答