htaccess:将所有请求重定向到不同的域(不带查询参数)

Posted

技术标签:

【中文标题】htaccess:将所有请求重定向到不同的域(不带查询参数)【英文标题】:htaccess: redirect all requests to different domain (without query arguments) 【发布时间】: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

【问题讨论】:

***.com/questions/1945568/… 【参考方案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 的意图。要查看发生了什么,您可以增加RewriteLogLevel:httpd.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 请求。

【讨论】:

以上是关于htaccess:将所有请求重定向到不同的域(不带查询参数)的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 重定向除了一个文件

.htaccess 重定向规则相同的域但不同的前缀

Magento 2中的htaccess 301重定向

使用 htaccess 将多个域(http https www 和非 www)重定向到新域

将 https ip 重定向到共享主机中 htaccess 中的域

.htaccess:将主域重定向到https:// www,子域重定向到https://(不带www)