在 wp 文件夹中的任何 php 中获取 403

在 wp 文件夹中的任何 php 中获取 403

在 CentOS 6.7 上使用 VestaCP 与 nginx + httpd

该网站运行良好,但从 javascript 加载 php 文件失败,因为它给出 403 错误。

我尝试过以下操作:(每个文件夹都有相同的所有者和权限(755))

wp-content/test.php  // Error 403
wp-includes/test.php // Error 403
wp-admin/test.php    // OK, 200
test/test.php        // OK, 200
wp-contest/test.php  // OK, 200

事实上... wp-content/*.php 和 wp-includes/*.php 失败,包括这些文件夹内的子目录中的 php 。

位于 wp-content 和 wp-includes 中的任何 php 文件都会自动给出 403 错误,即使这些文件不存在,我也会得到 403 而不是 404。

  • 我检查了 nginx.conf ,没有与 wp-content/wp-includes 相关的内容
  • 我检查了.htaccess,没有什么奇怪的,我什至在备份后将其删除。
  • 文件夹权限为755,文件权限为644
  • 还尝试过restorecon -R /home/$user/web/url/public_html

没有任何效果,我不认为这与 WordPress 相关,因为文件是独立加载的,相反,它必须与服务器相关。

附加数据:

  • 我们在禁用代理的情况下使用 cloudflare,我不认为它继承了导致此问题的前任所有者的任何配置,但我不会丢弃它。
  • 该网站刚刚从托管迁移到我们的 vps
  • 我是系统管理员,我们有大约 60 个网站,任何其他网站都没有这个问题:/

答案1

好吧,我很惭愧地说,还有另一个.htaccessinwp-contentwp-include文件夹具有以下规则:

<FilesMatch "\.(?i:php)$">
  <IfModule !mod_authz_core.c>
    Order allow,deny
    Deny from all
  </IfModule>
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
</FilesMatch>

为此,我花了好几个小时用键盘砸我的头。

答案2

确保您没有可能覆盖您的自定义规则的目录返回值

相关内容