【问题标题】:htaccess: redirect all requests to different domain (without query arguments)htaccess:将所有请求重定向到不同的域(不带查询参数)
【发布时间】:2011-03-16 10:04:00
【问题描述】:

如何将 sub.domain.com 上的所有请求(无论请求哪个页面)重定向到 newdomain.com?目前我有

Redirect 301 / http://www.newdomain.com/

当对 domain.com/shop/product 的请求进入时,重定向会转到 newdomain.com/shop/product 而它应该只是转到 newdomain.com

【问题讨论】:

标签: .htaccess


【解决方案1】:

使用重写:

RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/ [R=301,L]

【讨论】:

  • 这会将每个请求发送到http://www.newdomain.com,但不会转发它们。
  • 你为什么这么认为?文档非常清楚地说明了这一点:“使用 [R] 标志会导致向浏览器发出 HTTP 重定向。如果指定了完全限定的 URL(即包括 http://servername/),那么将发出重定向到那个位置。否则,当前协议、服务器名和端口号将用于生成随重定向发送的 URL。 httpd.apache.org/docs/2.2/rewrite/flags.html#flag_r
  • 首先我测试了它并没有工作,然后我继续找出它的原因,因为正如你所说这是一个有效的规则,但最后有/$1 工作在我的大多数服务器上(我还没有测试过)。
  • 添加/$1会将请求的路径添加到新域中。这不是 OP 的意图。要查看发生了什么,您可以增加RewriteLogLevelhttpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteloglevel
【解决方案2】:
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

这将转发任何​​ GET 请求。

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 2016-10-18
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2012-11-16
    相关资源
    最近更新 更多