我已经为我的WordPress网络安装了W3总缓存,除了Minifier部分外,一切运行良好。
当置于“自动”时,插件需要访问此路径:
/wp-content/cache/minify/000006/M9AvLqnMSQUA.css
然而它因为Wordpress将其重定向到404.php模板而认为它是一个页面/固定链接而中断。
我可以将某些内容添加到我的.htaccess中或更改权限以允许直接访问此路径,以便缩小脚本可以正常工作吗?
到目前为止,我的.htaccess文件中包含的内容(包括所有总缓存设置)
# BEGIN W3TC Minify cache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^[_0-9a-zA-Z-]+/wp-content/cache/minify/[0-9]+/w3tc_rewrite_test$ /wp-content/plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
</IfModule>
# END W3TC Minify cache
# BEGIN W3TC Browser Cache
<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 WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress
答案 0 :(得分:3)
我已经有几个月同样的问题了,我想我已经解决了。它与文件权限有关。
要查明这是否是您的问题,请尝试导航至http://yourdomain.com/wp-content/plugins/w3-total-cache/pub/minify.php。如果您获得404,那么它可能是文件权限问题。你应该得到一个空白页面。
检查文件权限,如果任何插件目录设置为775和/或任何文件设置为664,那么这也指向权限错误。
要修复:
将所有这些文件夹的权限更改为 755 ,请确保仅包含所有子目录,文件夹。
/wp-content/plugins
/wp-content/cache
/wp-content/w3tc-config
另外,请确保仅使用filezilla中的“应用于文件”将文件正确设置为 644
/wp-content/plugins
/wp-content/cache
/wp-content/w3tc-config
执行此操作后,您可能必须清空minify缓存,并且根据它是否立即生效,您可能必须在清空缓存并重新尝试后重做权限。
答案 1 :(得分:0)
您没有# BEGIN WordPress
和# END WordPress
评论W3TC如何确定重写规则的位置 - 请查看/wp-content/plugins/w3-total-cache/inc/functions/rule.php
第19行(假设您拥有最新版本) )。
基本上WordPress在进入W3TC重写之前拦截了请求,你获得了404.通过将此部分移到W3TC规则之下,他们将在进入WordPress部分之前捕获重写({{1}在重写结束时说匹配是要遵循的 [L] ast规则),正确地将URL重写到缩小的缓存而不是导致404.
我的多站点安装中的“官方”(自动生成的)WordPress块如下所示,应该是[L]
文件中W3TC部分下面的最后一组重写规则。确保在更新此文件时包含其他插件可能会查找的注释。
.htaccess