【问题标题】:301 Redirect except for one person using .htaccess?301重定向除了一个人使用.htaccess?
【发布时间】:2010-07-13 01:00:59
【问题描述】:

我最近将一个 WordPress 站点迁移到了新服务器和新域名。为了将流量从旧站点重定向到新站点,我放置了一个简单的单行 .htaccess 文件:

重定向 301 / http://www.newsite.com/

然而,现在客户想要访问旧网站。有没有一种方法可以让一个人进入并将其他人重定向到新站点?

【问题讨论】:

    标签: apache wordpress .htaccess


    【解决方案1】:

    您可以通过在 Redirect 指令之前添加 RewriteCond 指令来使您的重定向有条件:

    RewriteCond %{SOMETHING} !the-client
    

    其中 SOMETHING 是一个服务器变量,您可以使用它来识别客户端,而 the-client 是一个识别客户端的模式。

    例如,如果您的客户端始终来自已知 IP 地址,您可以使用该地址:

    RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
    Redirect 301 / http://www.newsite.com/
    

    如果 IP 地址不适合您的情况,请参阅 http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html 了解更多可用的服务器变量。

    【讨论】:

      【解决方案2】:

      如果客户端有一个(相对)静态 IP 地址,您可以执行以下操作来代替您当前拥有的地址:

      RewriteEngine On
      
      # Replace with the appropriate IP address
      RewriteCond %{REMOTE_ADDR} !=192.168.0.1
      RewriteRule .* http://www.newsite.com%{REQUEST_URI} [R=301,L]
      

      或者,你也许可以做这样的事情......

      RewriteEngine On
      
      RewriteCond %{THE_REQUEST}  !\?noredirect
      RewriteCond %{HTTP_REFERER} !^http://www\.oldsite\.com
      RewriteRule .* http://www.newsite.com%{REQUEST_URI} [R=301,L]
      

      然后(假设他们的浏览器发送引荐来源网址)他们可以在http://www.oldsite.com/?noredirect 访问旧网站,并希望他们之后单击的任何后续链接都能正常工作,而无需重定向到新网站。不过我没有对此进行测试,所以我可能忽略了一些东西。

      【讨论】:

      • 非常感谢!第二条规则完美运行。客户端的 IP 地址更改过于频繁而无法使用 IP,因此向 URL 添加参数是理想的。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2018-05-10
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多