在 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
好吧,我很惭愧地说,还有另一个.htaccess
inwp-content
和wp-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
确保您没有可能覆盖您的自定义规则的目录返回值