1

我有一个安全站点 (.htaccess = Deny from all) 我想允许某些人访问

但是,他们使用的是移动笔记本电脑,并且拥有由 ISP 分配给他们的动态 IP

所以,我下载了 no-ip 客户端,它应该给他们一个可以解析为 IP 的主机。

然而,当我把

Allow from xxx.no-ip.org

在 .htaccess 文件中,我仍然得到禁止页面。

我有其他固定的 IP 位置允许 - 并且工作 - 我已经测试 xxx.no-ip.org 使用http://www.webyield.net/ipa.php解析为我想要的 IP 。

有什么想法我在这里做错了吗?

4

2 回答 2

3

ApacheAllowDeny规则使用通配符(例如,Allow from *.example.com),因此适用于反向 DNS。您的用户的 IP 地址没有反转为该no-ip.org地址(他们可能正在解析特定于 ISP 的内容),因此 Apache 拒绝他们访问。

您可能最好只给他们所有的用户名和密码,并使用 HTTP 身份验证(通过mod_authz_user或类似方式)授予他们访问权限。

于 2012-08-06T00:05:17.740 回答
0

这可以通过使用脚本来实现(根据您的需要进行修改):

#!/bin/bash
# Dynamic IP .htaccess file generator
# Written by Star Dot Hosting
# www.stardothosting.com

dynDomain="$1"
htaccessLoc="$2"

dynIP=$(/usr/bin/dig +short $dynDomain)

echo "dynip: $dynIP"
# verify dynIP resembles an IP
if ! echo -n $dynIP | grep -Eq "[0-9.]+"; then
    exit 1
fi

# if dynIP has changed
if ! cat $htaccessLoc | /bin/grep -q "$dynIP"; then

        # grab the old IP
        oldIP=`cat /usr/local/bin/htold-ip.txt`

        # output .htaccess file
        echo "order deny,allow" > $htaccessLoc 2>&1
        echo "allow from $dynIP" >> $htaccessLoc 2>&1
        echo "allow from x.x.x.x" >> $htaccessLoc 2>&1
        echo "deny from all" >> $htaccessLoc 2>&1

        # save the new ip to remove next time it changes, overwriting previous old IP
        echo $dynIP > /usr/local/bin/htold-ip.txt
fi

不仅仅是 cron 它在 .htaccess 文件上生成一个新行:

*/15 * * * * /bin/sh /usr/local/bin/.sh yourhostname.no-ip.org /var/www/folder/.htaccess > /dev/null 2>&1

来源:https ://www.stardothosting.com

于 2016-05-09T18:50:39.497 回答