我想限制访问我的开发站点,只有我的IP地址。(例如123.123.123.123
)
我在我的.htaccess
文件中有以下内容。但是我仍然被重定向到/dev_site_notice.html
。
我指定的是否正确?
SetEnvIf X-Forwarded-Proto https HTTPS=on
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteCond %{REQUEST_URI} !/dev_site_notice.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /dev_site_notice.html [R=302,L]
1条答案
按热度按时间carvr3hs1#
如果您正在检查
SetEnvIf
指令中的X-Forwarded-Proto
标头,则表示您位于代理服务器之后(否则应删除此指令)。如果是这种情况,则REMOTE_ADDR
服务器变量是代理的IP地址,而不是客户端IP地址。如果(且仅当)您使用代理服务器,则应该检查
X-Forwarded-For
HTTP请求头。例如:请注意,
X-Forwarded-For
标头可以包含多个(逗号分隔)IP地址,具体取决于请求是否经过多个代理。client-IP通常位于第一个(最左边),但您可能需要与代理确认这一点。因此,正则表达式不应以$
结尾(不管怎么说,你原来的正则表达式并没有这样做),而是($|\D)
(字符串结尾或 * 不是 * 数字)。X-Forwarded-For
头是事实上的标准,但是它可以随代理而变化。当请求通过时,设置这个头的是代理服务器。