允许.htaccess中由外部URL(以json格式)提供的IP

时间:2017-04-21 13:23:48

标签: php apache .htaccess

我怀疑是否有可能。客户有一个奇怪的要求,所以必须这样做。

我有一个允许某些ips的网站(ips在.htaccess中是硬编码的)。客户端为我提供了一个URL,其中包含一些以json格式列出的ips。我希望允许这些ips访问该网站。 (在网址上列出的Ips是动态的,所以我不能在.htaccess中使用它们)。有谁知道如何实现这一目标。

我知道我可以在htaccess中使用php文件(索引)并在其中编写代码来读取ips,但优先级是仅通过.htaccess文件来完成。

提前致谢。

需要一些帮助。

我在httpd文件中创建了rewriteMap。 RewriteMap accessmap“txt:E:\ htdocs \ myfolder \ map.txt”

我的map.txt有以下条目。 127.0.0.11允许 127.0.0.1允许 127.0.0.12拒绝

我在htacces文件中添加这些条目

RewriteCond $ {accessmap:%{REMOTE_ADDR}}允许[NC] RewriteRule ^(。*)$ https://www.exampleweb.com/ $ 1 [L,R = 302]

现在,例如我在我的地图文件中有127.0.0.1作为允许,因此应该允许它访问该站点。如果我想访问任何其他IP的网站表单 130.0.0.11(不在地图文件中)应该重定向到此链接https://www.exampleweb.com

我对htaccess知之甚少,无法理解怎么写 rewriteRule和重写条件。请帮忙。 注意:Ips只是例如,实际的ips会有所不同。

2 个答案:

答案 0 :(得分:1)

  1. 创建RewriteMap。在Apache配置文件(httpd.conf)或虚拟主机文件中添加以下代码。
  2. RewriteMap accessmap“txt:file / path / to / map.txt”

    注意:无法在 .htaccess 文件或目录部分中添加RewriteMap指令。 [来源:Using rewrite map]

    1. 然后在 .htaccess 文件中添加以下代码
    2. RewriteCond $ {accessmap:%{REMOTE_ADDR}}!^ allow

      RewriteRule ^(。)$ - [F,L] *

      这将允许 map.txt 文件中列出的值允许访问您网站的IP地址。否则,用户将看到403禁止错误。

答案 1 :(得分:0)

.HTtaccess文件由Apache HTTPD服务器不断读取。您可以根据需要通过脚本或其他内容更改其中的特定授权指令,并立即应用新的auth指令。