【问题标题】:How to configure a mod_rewrite to check both direct IP and proxy IP?如何配置 mod_rewrite 来检查直接 IP 和代理 IP?
【发布时间】:2017-10-26 01:30:40
【问题描述】:

我正在尝试配置我们的 wordpress .htaccess 文件,以便它阻止对 wordpress wp-login.php 和管理页面的访问,除非客户端来自我们的网络。

开发环境可以直接访问,但生产环境在代理之后,所以为了简单起见,我想配置一组适用于任何一种情况的规则。

我已经配置了以下一组规则,根据我的研究,这些规则应该可以工作:

#only allow use of wp-login or wp-admin from users inside
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^192\.168\.(1|2|3|4)\.[0-9]{1,3}$            [OR]
RewriteCond %{HTTP:X-FORWARDED-FOR} !^192\.168\.(1|2|3|4)\.[0-9]{1,3}$
RewriteRule ^(.*)$ - [R=403,L]

但是,由于某种原因,REMOTE_ADDR 和 X-FORWARDED-FOR 之间的 [OR] 似乎被忽略了,导致页面在所有情况下都被阻止。

我错过了什么吗?

编辑:我不应该有 OR 条件。显然我的大脑没有足够的咖啡来计算基本的二元运算。

【问题讨论】:

    标签: wordpress apache .htaccess mod-rewrite


    【解决方案1】:

    我想您的客户通过代理或直接连接。由于如果其中一个不匹配,您将阻止它们,因此您很可能会全部阻止它们。通过本地代理来的人应该可以通过。我不会在 .htacces 中使用 XFF 的东西,如果可能的话,使用mod_remoteip,并且只信任你自己的代理,因为客户端很容易欺骗该标头。

    另外,wp-admin 行中的 $ 表示它不会匹配 wp-admin/edit.php。还要考虑 WP ajax 请求通过 wp-admin/admin-ajax.php,您可能需要这些。

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 2020-02-04
      • 1970-01-01
      • 2022-03-03
      • 1970-01-01
      • 2010-10-10
      相关资源
      最近更新 更多