0

我的服务器或登台服务器上有一个奇怪的行为,我们需要看看实际问题出在哪里。以下是流行的 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 或类似我不想听到的东西的坏方法。我们有一个完全安全的设置,文件可以直接访问我的插件或主题目录这一事实是无关紧要的。网络上发布了大量类似的问题,但没有答案,只有人们说你应该这样做。我在这里尝试的是回答为什么它在一台服务器上而不是另一台服务器上这样做。

4

1 回答 1

1

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

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

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

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

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

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

于 2012-10-19T14:12:46.427 回答