重定向到子目录中的所有请求,除了少数的IP地址(Redirect all requests to s

2019-06-26 15:08发布

这个问题试图结合知识从SO一些以前的答案上涨,所以不标记为重复,除非答案是满足了所有的即将给出的标准。

这就是我想做的事:
我需要暂时的.htaccess访问者重定向到我的网站的克隆复制,这样我可以在现有的网站上进行修改。
因此,我有以下需求:
1.所有用户的请求/(.*)应该被重定向到子目录/网站/ $ 1(即如果有人请求的index.php它应该去/website/index.php)
2.如果用户是从三个具体IPS一个请求不应该被重定向,并且应到文件(即,如果我要求的index.php它应该去的index.php)
3中。所述重定向也应强制使用WWW的(有或没有WWW即请求,应重定向到www.example.com/website)
4.说重定向应该是某些种类的临时重定向(正常的网站将只下降了两天的)

这是我当前的代码:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "http\:\/\/www\.example\.com\/website\/" [R=301,L]

它符合标准1,3和4。我只是需要帮助其调整到不重定向三个特定的IP地址。

任何想法,以如何将#2?

Answer 1:

怎么样:

RewriteEngine On

# for #2
RewriteCond %{REMOTE_ADDR} !123\.45\.67\.89$
RewriteCond %{REMOTE_ADDR} !123\.45\.67\.90$

# for #1 and #3 and #4
RewriteCond %{REQUEST_URI} !^/website/ [NC]
RewriteRule ^(.*)$ http://www.example.com/website/$1 [R=302,L]

#2你要替换的123\.45\.67\.89等与你想不被重定向的IP地址。

为#4, R=301需要被改变为R=302



文章来源: Redirect all requests to subdirectory except a few ip addresses