【问题标题】:I am using CloudFlare. How do I block access to my site admin to all but my IP address using .htaccess我正在使用 CloudFlare。如何使用 .htaccess 阻止对我的站点管理员的访问,但我的 IP 地址除外
【发布时间】:2018-12-19 17:46:58
【问题描述】:

我的应用程序在位于 cloudflare 后面的 ubuntu 服务器上运行。如果访问者不是来自我的 IP 123.1.2.3,我想重定向 example.com/admin 的请求以显示 404

我试过this 我也尝试过使用

RewriteCond %{HTTP:CF-CONNECTING-IP} !^(123\.1\.2\.3)$
RewriteRule ^admin.php  - [R=404,L]

但它们都不起作用。
我已经安装了 mod_cloudflare

【问题讨论】:

    标签: .htaccess cloudflare x-forwarded-for


    【解决方案1】:

    尝试改用这个:

    RewriteCond %{REMOTE_ADDR} !=123.1.2.3
    RewriteRule admin.php$ /404.php [R=302,L]
    

    我已将其设置为 R=302,因为这是一个临时重定向,我假设您不希望永久这样做,但如果您这样做,请将其更改为 R=301

    确保在测试之前清除缓存。

    【讨论】:

    • 不,那没用。可能是因为我使用的是 Cloudflare(代理),这就是我尝试 x-forwarded-for 的原因,根据问题中的链接
    【解决方案2】:

    试试:RewriteCond %{CF-CONNECTING-IP} !123.1.2.3

    【讨论】:

      【解决方案3】:

      如果您使用mod_cloudflare,它是否有效?下面的 PHP 会显示你的实际 IP 地址吗?

      echo $_SERVER['REMOTE_ADDR'];
      

      mod_cloudflare instructions 假设mod_cloudflare 工作正常,如果你有一个管理目录,你应该能够做这样的事情。

      .htaccess 在管理目录中...

      order deny,allow
      deny from all
      allow from 123.1.2.3
      

      或者,如果它只是一个您需要保护的文件,假设您启用了mod_rewrite,以下应该可以工作(来自this question)。

      .htaccess 在您网站的根目录中...

      RewriteEngine on
      RewriteCond %{REMOTE_ADDR} !=123.1.2.3
      RewriteRule admin.php$ /404.php [R=301,L]
      

      在ubuntu中启用mod_rewrite...

      sudo a2enmod rewrite
      

      【讨论】:

        【解决方案4】:

        试试这个:

        RewriteEngine On
        RewriteCond %{HTTP:CF-CONNECTING-IP} !=123.1.2.3
        RewriteRule (.*) /404 [R]
        

        【讨论】:

          猜你喜欢
          • 2014-06-16
          • 1970-01-01
          • 2011-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-14
          • 2015-12-25
          • 1970-01-01
          相关资源
          最近更新 更多