18

基本上我即将开始在一个网站上工作,我想要一些可以添加到我的 .htaccess 文件(或其他地方)中的东西,它可以像这个伪代码一样工作:(我的 ip 将代替 127.0.0.1 )

if (visitors_ip <> 127.0.0.1)
    redirectmatch ^(.*)$ http://www.example.com/under-construction.html

希望这是有道理的......

4

4 回答 4

31

那将是这样的

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1

RewriteCond %{REQUEST_URI} !/mypage\.html$  

RewriteRule .* http://www.anothersite.com/mypage.html [R=302,L]

正如Andrew指出的那样,如果您重定向到同一个域, %{REQUEST_URI} 条件可以避免无限循环。

正如近 9 年后Xorax评论的那样:

你不应该使用REMOTE_HOST,它在很多情况下会失败。你应该使用REMOTE_ADDR.
参见“和之间的区别REMOTE_HOSTREMOTE_ADDR

于 2008-11-16T00:36:49.903 回答
3

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

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。

于 2008-11-17T19:49:10.483 回答
2
<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>

在您的 wordpress ifmodule 之前,这将重定向除有问题的 3 个 IP 地址之外的所有人。

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

于 2013-04-13T21:37:06.073 回答
0

小心这种方法。

采用基于 IP 的方法来限制访问,然后失去对我的 IP 地址的租约,我已经被烧毁了。

当然,您总是可以通过 ssh 进入有问题的框并再次更改 .htaccess 文件,但是如果您不希望它发生,那么当您试图弄清楚刚刚发生的事情时,5 分钟的恐慌并不是很有趣。

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

一个很好的例子在这里:http ://aplawrence.com/foo-web/htaccess-authentication.html

于 2008-11-16T00:47:45.747 回答