想要重定向除我之外的所有访问者

时间:2008-11-16 00:26:06

标签: .htaccess http-status-code-302

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

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

希望这有意义......

4 个答案:

答案 0 :(得分:24)

那将是something like

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}条件会避免无限循环。

正如Xorax评论almost 9 years later

  

你不应该使用REMOTE_HOST,在许多情况下都会失败。你应该使用REMOTE_ADDR   Cf“difference between REMOTE_HOST and REMOTE_ADDR

答案 1 :(得分: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是一个临时移动,应该使用而不是什么或301。

答案 2 :(得分: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文件。

答案 3 :(得分:0)

小心这种方法。

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

当然你总是可以直接进入有问题的盒子并再次更改.htaccess文件,但是当你试图找出刚刚发生的事情时,5分钟的恐慌并不是很有趣,如果你不期待它发生。

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

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