为什么WordPress会阻止一台服务器上访问WP-content文件,而不是使用相同的HTACCESS代码访问另一个服



我在服务器或登台服务器上有一个奇怪的行为,我们需要查看实际问题在哪里。这是流行的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"测试... p>如果像登台服务器或开发服务器一样,任何htaccess guru都可以告诉我,代码粘贴的真实行为是什么。

我倾向于认为它应该像开发服务器一样,任何文件访问或目录访问都应被授予,并且由于:

而不会返回404
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

条件!

谢谢

注意:不要告诉我这是代码WordPress或类似内容的不好方法。我们有一个完全安全的设置,并且可以将文件直接访问到我的插件中或主题目录是无关紧要的事实。许多类似的问题都发布在网络上,但没有答案,只有人们说您应该这样做。我在这里尝试的是要获得一个答案,以获取为什么它在一台服务器上而不是另一台服务器上这样做。

没关系,霍斯特发现了问题,但我会回答的,以便其他人实际上可以依靠它。

我们的主管使用基于CPANEL的安装,并带有一个模块,该模块可以防止使用组件的文件。

要迁移从开发到分期的站点,我们选择了" BackupBuddy"解决方案,这是小型WordPress网站部署的一个很好的解决方案...问题吗?它在775下提取文件。这使我们遇到了WordPress安装的AJAX文件的问题。

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

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

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

最新更新