.htaccess 要重定向除我之外的所有访问者吗

.htaccess 要重定向除我之外的所有访问者吗,.htaccess,http-status-code-302,.htaccess,Http Status Code 302,基本上,我即将开始在一个网站上工作,我希望我可以添加到我的.htaccess文件(或其他地方)中,类似于以下伪代码:(我的ip将取代127.0.0.1) if(访客ip 127.0.0.1) 重定向匹配^(.*)$http://www.example.com/under-construction.html 希望这是有意义的…那将是: 正如所指出的,%{REQUEST_URI}条件避免了重定向到同一域时的无限循环 RewriteEngine On RewriteBase / RewriteCon

基本上,我即将开始在一个网站上工作,我希望我可以添加到我的.htaccess文件(或其他地方)中,类似于以下伪代码:(我的ip将取代127.0.0.1)

if(访客ip 127.0.0.1)
重定向匹配^(.*)$http://www.example.com/under-construction.html
希望这是有意义的…

那将是:

正如所指出的,%{REQUEST_URI}条件避免了重定向到同一域时的无限循环

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/coming-soon\.html$ 
RewriteRule .* http://www.andrewgjohnson.com/coming-soon.html [R=302,L]
作为评论:

您不应该使用
远程\u主机
,它在许多情况下都会失败。您应该使用
REMOTE\u ADDR

Cf“


小心这种方法

我采取基于IP的方法限制访问,然后失去IP地址的租约,这让我很恼火

当然,您可以通过ssh将文件放到有问题的框中,然后再次更改.htaccess文件,但是如果您不希望它发生,那么在您试图弄清楚刚才发生了什么的过程中,5分钟的恐慌并不十分有趣

我建议改为使用.htaccess(与htpasswd文件结合使用)来请求访问开发站点的凭据


这里有一个很好的例子:

这是我最后使用的解决方案,请注意,它与VonC的类似,只是如果您选择重定向到同一个域,his会导致无限循环

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/coming-soon\.html$ 
RewriteRule .* http://www.andrewgjohnson.com/coming-soon.html [R=302,L]
还需要注意的是,302是一个临时移动,应该使用它来代替nothing或301。


<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect all except allowed IP
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.001$
RewriteCond %{REMOTE_ADDR} !000\.000\.000\.002$
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.003$
RewriteRule (.*) http://YourOtherWebsite.com/$1 [R=301,L] 
</IfModule>
重新启动发动机 #重定向除允许的IP之外的所有 重写cond%{REMOTE_ADDR}^000\.000\.000\.001$ 重写cond%{REMOTE_ADDR}!000\.000\.000\.002$ 重写cond%{REMOTE_ADDR}^000\.000\.000\.003$ 重写规则(.*)http://YourOtherWebsite.com/$1[R=301,L]
在wordpress模块之前 这将重定向除3 ip地址以外的所有人


如果您的IP地址发生变化,您只需通过ftp发送到该站点并编辑.htaccess文件。

是的,谢谢,这一点很好,但我不会让这条线路保持一到两周以上。根据您的网络设置,您的租用时间可能会短得多。我只是在回答中添加了您额外的重写条件,现在IPv6已经出现了,我发现有些情况下本地主机的IP地址是::1,并不总是127.0.0.1--不完全确定什么时候和为什么,但要处理这个问题,我认为您需要一个附加条件:
RewriteCond%{REMOTE_HOST}!^::1
冒号不应该要求转义——我不相信重写引擎regex不需要特殊字符。你不应该使用远程主机,它在很多情况下都会失败。你应该使用远程地址@谢谢。我已经修改了我9年前的答案。
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect all except allowed IP
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.001$
RewriteCond %{REMOTE_ADDR} !000\.000\.000\.002$
ReWriteCond %{REMOTE_ADDR} !^000\.000\.000\.003$
RewriteRule (.*) http://YourOtherWebsite.com/$1 [R=301,L] 
</IfModule>