.htaccess 是否要重定向除我以外的所有访问者

klh5stk1  于 2023-03-09  发布在  其他
关注(0)|答案(5)|浏览(182)

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

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

希望这是有道理的...

gr8qqesn

gr8qqesn1#

这将是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在差不多9年后评论的那样:
您不应该使用REMOTE_HOST,它在很多情况下会失败。您应该使用REMOTE_ADDR
参见“difference between REMOTE_HOST and REMOTE_ADDR

mefy6pfw

mefy6pfw2#

下面是我最终使用的解决方案,注意它与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。

0yycz8jy

0yycz8jy3#

<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文件。

tyky79it

tyky79it4#

使用这种方法时要小心。
我已经得到了烧伤采取基于IP的方法来限制访问,然后失去了对我的IP地址的租约。
当然,您可以使用ssh命令再次修改.htaccess文件,但是如果您没有预料到发生了什么,那么在试图找出刚刚发生的事情时的5分钟恐慌就不那么有趣了。
我建议使用.htaccess(与htpasswd文件结合使用)来请求访问开发站点的凭据。
下面就是一个很好的例子:http://aplawrence.com/foo-web/htaccess-authentication.html

slwdgvem

slwdgvem5#

<IfModule mod_rewrite.c>
 RewriteEngine On
#IPv4
 RewriteCond %{REMOTE_ADDR} !^26\.122\.33\.214 
#IPv6
 RewriteCond %{REMOTE_ADDR} !^2a01\:3f0d\:e31e\:c410\:98b\:a6ff\:45b0\:5132
#avoid infinite loop
 RewriteCond %{REQUEST_URI} !/offline/index.html$ [NC]
#allow images to be accessed
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
#redirect to the offline page or other URL.
 RewriteRule .* /offline/index.html [R=302,L]
</IfModule>

相关问题