Wordpress和W3 Total Cache minifier

时间:2013-03-25 00:34:35

标签: wordpress .htaccess caching

我已经为我的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

2 个答案:

答案 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

Changing directory permissions

另外,请确保仅使用filezilla中的“应用于文件”将文件正确设置为 644

/wp-content/plugins
/wp-content/cache
/wp-content/w3tc-config

Changing file permissions

执行此操作后,您可能必须清空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]文件中W​​3TC部分下面的最后一组重写规则。确保在更新此文件时包含其他插件可能会查找的注释。

.htaccess