事实证明,如果启用了磁盘增强模式,则W3 Total Cache插入的nginx配置将中断永久链接,但只有在W3 Total Cache注入磁盘增强模式的配置后重新启动nginx时,才会中断永久链接。
基于birgire\'s 根据我的建议,我关闭了所有插件并检查了网站,网站开始正常工作。然后,我打开了W3 Total Cache和惊喜!该网站继续正常运行。它继续正常工作,直到我重新启动了nginx,此时nginx。W3 Total缓存创建的conf文件已加载,站点已中断。导致此行为的原因如下:
if ($w3tc_rewrite = 1) {
rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_rewrite$w3tc_ext" last;
}
重新启动nginx时,将加载上述行,并将所有URL重定向到中的缓存HTML文件
wp-content/cache/page_enhanced
. 但在重新启动时,HTML文件被清除,因此链接变为404。我提出的解决方案是首先更改W3 Total Cache通常写入的nginx配置文件的权限,以便它不会被覆盖。然后我更改了上述配置:
location / {
rewrite ^(.*\\/)?w3tc_rewrite_test/?$ $1?w3tc_rewrite_test=1 last;
if ($w3tc_rewrite = 1) {
rewrite .* "/wp-content/cache/page_enhanced/$http_host/$request_uri/_index$w3tc_rewrite$w3tc_ext" last;
}
try_files $uri $uri/ /index.php?$args;
}
配置做了几件事-原始重写行被包装在一个位置块中,这样即使HTML文件没有定位,它也会返回到一个常规索引。php呈现模型。此外
w3tc_rewrite_test
该行用于消除仪表板中的错误。我在一个单独的文件中这样做是为了集中我的W3 TC配置,所以有两个
location \\
我的网站的指令。
为了获得额外的积分,W3 Total config的minify模块的nginx配置也被破坏了。这是一个工作配置:
#Test Rewrites
location ~ ^/wp-content/cache/minify/[^/]+/(w3tc.*)$ {
try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=$1;
}
#End Test Rewrites
# BEGIN W3TC Minify core
set $w3tc_enc "";
location ~ ^/wp-content/cache/minify/(.+/[X]+\\.css)$ {
try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?test_file=$1;
}
location ~ ^/wp-content/cache/minify/(.+\\.(css|js))$ {
try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1;
}
# END W3TC Minify core
由于许多Wordpress/W3 Total Cache信息依赖于版本,下面是上述配置的版本信息:W3 Total Cache v0。9.4/Wordpress 4.0/nginx 1.6.2-2 ~ bpo70+1
1https://rtcamp.com/wordpress-nginx/tutorials/single-site/w3-total-cache/