2012-07-29 81 views
1

这个问题试图结合从SO上的一些以前的答案中获得的知识,所以不要标记为重复,除非答案满足所有将要给出的标准。将所有请求重定向到子目录,除了几个IP地址

这就是我想要做的:
我需要暂时.htaccess将访问者重定向到我的网站克隆副本,以便我可以对现有网站进行修改。
因此,我有以下需求:
1.所有用户请求/(.*)应该被重定向到子目录/ website/$ 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的任何想法?

回答

2

如何:

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你想,你想不被重定向的IP地址来替换123\.45\.67\.89等。

对于#4,需要将R=301更改为R=302

相关问题