覆盖服务器上的所有 Wordpress htaccess



为此,我们已经尝试了一些在Google上找到的东西,但似乎无法正常工作。

问题所在

我们有一个服务器,上面有大约500个Wordpress网站。我们试图使用全局htaccess将每个实例的所有wp-login.php页面锁定到我们办公室的IP地址 - 但是单个Wordpress htaccess文件正在覆盖这一点。

环境

我们托管在运行 Plesk 的 AWS Linux 服务器上,用于管理每个网站/Wordpress 实例。

问题

有没有办法我们可以在服务器上设置一个htaccess文件来锁定所有Wordpress登录页面,而不会被单个htaccess文件覆盖?


任何帮助或建议,以达到一个好的方法,将不胜感激。

提前致谢

我假设你已经阅读了RewriteOptions指令。 正如我在调试.htaccess重写规则的提示中所解释的那样,正如您在生成自己的.htaccess文件的WP中发现的那样,默认情况下,将扫描当前路径以查找.htaccess并应用最低路径中的重写规则,除非较高的规则指定了RewriteOptions Inherit在这种情况下,在子范围中指定的规则之后执行其规则,这是 WP 访问文件中的第 22 条军规,在其所有执行路径上生成一个 [L] 标志,防止父规则触发。

所以答案是使用Apache机制而不是重写来做到这一点,你可以使用SetEnvif指令:

SetEnvIf Remote_Addr "!^192.168." forbidden
<Files *>
  Order allow,deny
  Allow from all
  Deny from env=forbidden
</Files> 

SetEnvIf Remote_Addr "!^192.168." forbidden
<Directory /var/www/wproot>
  Order allow,deny
  Allow from all
  Deny from env=forbidden
</Directory> 

显然,您需要将正则表达式更改为本地需求,但这应该可以完成业务。 Apache文档对此提供了其他变体,但您应该能够找到适合您的情况的变体。 只需将其放在每个虚拟服务器上下文中 - 如有必要,在 Directory(Match( 指令中 - 或放在公共父目录.htaccess文件中。

我最终得到了它与您的第一个建议一起工作,但实际上不需要 SetEnvIf 行,所以非常感谢! 这是我在/var/www/vhosts 文件夹中的 .htaccess 供其他需要这个的人使用:

<files wp-login.php>
  order deny,allow
  deny from all
  Allow from xxx.xxx.xxx.xxx
</files>

很好,很简单,与我以前试图采取的路线完全不同。

最新更新