我有一个PHP脚本,它收集写入文件的某个域的当前DHCP地址。
我需要将该文件中的IP地址(或直接从.htaccess
文件中收集(读取到我的.htaccess
的一部分中,以便仅允许该特定IP地址登录到我的帐户。
我以前用过:
RewriteCond %{REMOTE_HOST} ^example.com$ [NC]
RewriteCond %{REQUEST_URI} ^/wp-login.php$
RewriteRule ^(.*)$ blackhole.html [L,R]
我现在托管在LiteSpeed服务器上,该服务器不进行反向DNS查找,因此我无法使用任何主机名查找。
需要一个简单的解决方案。
RewriteCond %{REMOTE_HOST} ^example.com$ [NC] RewriteCond %{REQUEST_URI} ^/wp-login.php$ RewriteRule ^(.*)$ blackhole.html [L,R]
旁白:此代码将有效地阻止特定用户,而不是";允许";他们您需要否定第一个条件。即!^example.com$
然而,服务器是否配置为执行主机名查找并不一定是LiteSpeed本身的问题。这可能只是服务器的配置方式。许多共享主机出于性能原因禁用了此功能。
不幸的是,在.htaccess
中从外部文件读取值时,您的问题仍然是LiteSpeed。
您可以在Apache 2.4+上使用Apache表达式从外部文件中读取IP地址,并将其与REMOTE_ADDR
服务器变量进行比较:
RewriteCond expr "file('%{DOCUMENT_ROOT}/ip-address.txt') != %{REMOTE_ADDR}"
RewriteRule ^wp-login.php$ /blackhole.html [R,L]
其中ip-address.txt
是文档根目录中的一个文件,它只包含一个IP地址(不包含换行符(。
然而,不幸的是,在LiteSpeed上,这根本不起作用。它只是无声地失败(LiteSpeed方式(。
旁白:
尽管如此,与其将重定向到blackhole.html
,不如只提供404或403 Forbidden。例如:
RewriteRule ^wp-login.php$ - [R=404]