【问题标题】:Why does Wordpress prevent access to wp-content files on one server but not the other with same htaccess code为什么 Wordpress 会阻止访问一台服务器上的 wp-content 文件,但使用相同的 htaccess 代码却不能访问另一台服务器上的 wp-content 文件
【发布时间】:2026-01-13 23:30:01
【问题描述】:

我的服务器或临时服务器上出现了奇怪的行为,我们需要查看实际问题出在哪里。以下是流行的 Wordpress CMS 中的一些知名代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

AddHandler application/x-httpd-php53 .php

与原始代码的唯一区别是在文件末尾添加了“AddHandler”,这是我们的暂存托管服务提供商所必需的。

真正的问题是我可以在我的开发服务器(基于内部 Ubuntu 的 12.04 标准服务器)上的以下虚拟 url 访问文件,而不是在生产或暂存(它们都是同一台服务器)中访问文件。

  1. /wp-content/test.php
  2. /wp-content/themes/test.php
  3. /wp-content/themes/wpactivis/test.php
  4. /wp-content/themes/wpactivis/_/test.php
  5. /wp-content/themes/wpactivis/_/ajax/test.php

现在在一组服务器上,这些 url 返回 404,Wordpress 似乎在我们的开发服务器上自动启动,200 OK 并且文件内容返回,这是经典的“Hello world”测试......

任何 htaccess 大师都可以告诉我粘贴的代码的真实行为应该是什么,应该像登台服务器还是开发服务器。

我倾向于认为它应该像开发服务器一样,应该授予任何文件访问或目录访问权限,并且不返回 404,因为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

条件!

谢谢

注意:不要告诉我这是编写 wordpress 或类似我不想听到的东西的坏方法。我们有一个完全安全的设置,文件可以直接访问我的插件或主题目录这一事实是无关紧要的。网络上发布了大量类似的问题,但没有答案,只有人们说你应该这样做。 我在这里尝试的是回答为什么它在一台服务器上而不是另一台服务器上这样做。

【问题讨论】:

    标签: wordpress apache .htaccess


    【解决方案1】:

    没关系,主持人发现了问题,但我会回答它,以便其他人可以真正依赖它。

    我们的主机使用基于 CPanel 的安装和一个模块,该模块阻止提供可组写的文件。

    为了将站点从开发迁移到登台,我们选择了“BackupBuddy”解决方案,这是一个非常适合小型 wordpress 站点部署的解决方案...有问题吗?它会提取 775 下的文件。这导致我们在处理 Wordpress 安装的 ajax 文件时遇到问题。

    要解决此问题,如果您可以通过 SSH 访问您的服务器,只需递归地将目录的权限更改为 755,将文件的权限更改为 644,使用:

    find . -type f -print -exec chmod 644 {} \;
    find . -type d -print -exec chmod 755 {} \;
    

    祝你好运,我希望这对其他人有所帮助。

    【讨论】:

      最近更新 更多