1

这个问题试图结合从之前关于 SO 的一些答案中获得的知识,所以不要标记为重复,除非答案符合即将给出的所有标准。

这就是我想要做的:
我需要临时 .htaccess 将访问者重定向到我的站点到一个克隆副本,以便我可以对现有站点进行修改。
因此,我有以下需求:
1. 所有用户请求/(.*) 应该被重定向到子目录/website/$1(即如果有人请求/index.php 它应该去/website/index.php)
2 . 如果用户来自三个特定 ip 之一,则不应重定向请求,而应转到文件(即,如果我请求 /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的任何想法?

4

1 回答 1

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,您希望将123\.45\.67\.89etc 替换为您不希望被重定向的 IP 地址。

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

于 2012-07-29T20:38:49.553 回答