【问题标题】:Wordpress and the W3 Total Cache minifierWordpress 和 W3 Total Cache minifier
【发布时间】:2013-03-14 09:50:36
【问题描述】:

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

【问题讨论】:

    标签: wordpress .htaccess caching


    【解决方案1】:

    您没有 # BEGIN WordPress# END WordPress cmets,这是 W3TC 确定将其重写规则放在何处的方式 - 请查看 /wp-content/plugins/w3-total-cache/inc/functions/rule.php 的第 19 行(假设您拥有最新版本)。

    基本上,WordPress 会在请求进入 W3TC 重写之前拦截请求,您会得到 404。通过将此部分移至 W3TC 规则下方,他们将在重写进入 WordPress 部分之前捕获它([L] at重写的结尾说匹配是要遵循的 [L]ast 规则),正确地将 URL 重写到您的缩小缓存并且不会导致 404。

    我的多站点安装中的“官方”(自动生成)WordPress 块如下所示,应该是您的.htaccess 文件中的最后一组重写规则,位于 W3TC 部分下方。确保包含 cmets,因为其他插件在更新此文件时可能会查找它们。

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule . index.php [L]
    </IfModule>
    # END WordPress
    

    【讨论】:

    • 嗯,即使进行了这些更改,我仍然会被重定向到主题 404 页面。我已经更新了上面的 .htaccess。
    • 你能发布你新的完整 .htaccess 文件吗?
    • 是的,我使用新的 .htaccess 文件更新了问题。感谢您的帮助!
    • 您是否尝试过重新保存永久链接结构或再次打开和关闭缩小重写?看起来您可能会错过那里的重写,从而导致 404。
    • 只是重新阅读您的问题,我原来的建议是错误的 - 您引用的 URL 不存在,它应该是对 W3TC 的重写以提供缩小文件。在插件配置中,您是否尝试禁用“缩小重写”?你有错误的管理员/电子邮件通知吗?
    【解决方案2】:

    几个月来我一直遇到同样的问题,我想我已经解决了。和文件权限有关。

    要确定这是否是您的问题,请尝试导航至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
    

    同时确保文件正确设置为 644,方法是使用仅在 filezilla 中应用到文件

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

    您可能需要在执行此操作后清空 minify 缓存,并且根据它是否立即工作,您可能需要在清空缓存并重试后重做权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2023-03-21
      相关资源
      最近更新 更多