【问题标题】:Allow access in htaccess based on the HTTP:X-FORWARDED-FOR允许基于 HTTP:X-FORWARDED-FOR 在 htaccess 中访问
【发布时间】:2020-07-25 01:07:18
【问题描述】:

您好,我应该只允许特定的 IP 地址(即 HTTP:X-FORWARDED-FOR 地址)访问文件。我已经通过以下方式完成了

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP:X-FORWARDED-FOR} !^xxx.xxx.x.xx$
RewriteRule ^$ http://xxx.xxx.x.xx/access_denie.php [R=301,L]

现在我必须允许它用于多个 ip,例如 yyy.yy.y.yy。我如何使用 htaccess 来做到这一点

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    RewriteCond^xxx.xxx.x.xx$ 部分只是一个正则表达式。您可以轻松地使用组来添加更多 IP 地址:

    ^(xxx\.xxx\.x\.xx|yyy\.yy\.y\.yy)$
    

    你会注意到我已经用反斜杠转义了所有.s - 这是因为. 在正则表达式中具有特殊含义,如果你希望它只匹配文字@,则需要对其进行转义987654326@ 字符。

    所以你的新RewriteCond 将如下所示:

    RewriteCond %{HTTP:X-FORWARDED-FOR} !^(xxx\.xxx\.x\.xx|yyy\.yy\.y\.yy)$
    

    您可以轻松添加更多 IP 地址,只需将它们用| 字符分隔即可。

    但是请注意,这种方法不会给您任何真正的安全性。欺骗请求以通过此操作很容易。如果您需要安全性,您应该使用 SSL 和适当的身份验证系统。

    【讨论】:

      【解决方案2】:
      RewriteCond %{HTTP:X-Forwarded-For}i 1\.1\.1\.1 [OR]
      RewriteCond %{HTTP:X-Forwarded-For}i 2\.2\.2\.2 [OR]
      RewriteCond %{HTTP:X-Forwarded-For}i 3\.3\.3\.3
      RewriteRule ^(.*) - [F]
      

      RewriteCond %{HTTP:X-Forwarded-For} (1\.1\.1\.1|2\.2\.2\.2|3\.3\.3\.3)
      RewriteRule ^(.*) - [F]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 1970-01-01
        • 2013-07-31
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 2012-11-05
        相关资源
        最近更新 更多