首页 > 解决方案 > htaccess - 只允许访问我的 dhcp ip 地址

问题描述

我需要在我的测试服务器上创建一个临时的 .htaccess 文件,这样只有我的公共 dhcp ip 才能访问我的测试站点。

我的 .htaccess 中有三行。

RewriteEngine On
RewriteCond expr "file('%{DOCUMENT_ROOT}/myip') != %{REMOTE_ADDR}"
RewriteRule ^(.*)$ /blackhole2.html [R,L]

第一行读取我写在 /myip 文件中的 php 脚本文件的输出。如果地址与“remote_addr”不匹配,则转发到适当的网页。即:blackhole2.html

看起来如果 IP 地址匹配,我可以访问我的测试站点。但是,如果 ip 地址不匹配,则重写规则会出错并出现 302 循环错误。

我已经尝试了几个标志分隔符等,但现在已经把我的玩具从我的 IT 抽屉里扔了出来。

我忽略了什么,或者不明白还需要什么。谢谢。

标签: apache.htaccessmod-rewrite

解决方案


当 IP 地址不匹配时,这会触发重定向循环,因为重定向的响应/blackhole2.html被相同的规则捕获/blackhole2.html并一次又一次地重定向到....

您需要包含/blackhole2.html请求时的例外情况。

例如:

:
RewriteRule !^blackhole2\.html$ /blackhole2.html [R,L]

或者干脆阻止请求(403 Forbidden)并且不重定向:

:
RewriteRule ^ - [F]

尽管如果您有自定义 403 ,则需要创建一个例外ErrorDocument


推荐阅读