基本上我即将开始在一个网站上工作,我想要一些可以添加到我的 .htaccess 文件(或其他地方)中的东西,它可以像这个伪代码一样工作:(我的 ip 将代替 127.0.0.1 )
if (visitors_ip <> 127.0.0.1)
redirectmatch ^(.*)$ http://www.example.com/under-construction.html
希望这是有道理的......
基本上我即将开始在一个网站上工作,我想要一些可以添加到我的 .htaccess 文件(或其他地方)中的东西,它可以像这个伪代码一样工作:(我的 ip 将代替 127.0.0.1 )
if (visitors_ip <> 127.0.0.1)
redirectmatch ^(.*)$ http://www.example.com/under-construction.html
希望这是有道理的......
那将是这样的:
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} 条件可以避免无限循环。
你不应该使用
REMOTE_HOST
,它在很多情况下会失败。你应该使用REMOTE_ADDR
.
参见“和之间的区别REMOTE_HOST
REMOTE_ADDR
”
这是我最终使用的解决方案,请注意它与 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。
<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 文件。
小心这种方法。
采用基于 IP 的方法来限制访问,然后失去对我的 IP 地址的租约,我已经被烧毁了。
当然,您总是可以通过 ssh 进入有问题的框并再次更改 .htaccess 文件,但是如果您不希望它发生,那么当您试图弄清楚刚刚发生的事情时,5 分钟的恐慌并不是很有趣。
我建议改为使用 .htaccess(与 htpasswd 文件一起)来请求访问您的开发站点的凭据。
一个很好的例子在这里:http ://aplawrence.com/foo-web/htaccess-authentication.html