2

我想将旧域上的所有请求重定向到新域的主页(根站点)。我认为它适用于:

RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.com/ [R=301]

(请参阅:.htaccess 将所有页面重定向到新域)但是由于一个奇怪的原因,当我尝试例如访问 URL www.olddomain.com/faq/pdf.php?cat=7&id=93&artlang=de 时,我被重定向到www.newdomain.com/?cat=7&id=93&artlang=de。可能是什么问题呢?

过去我遇到了一些问题,因为这个域位于我的新主域的子目录(作为插件域)中,但是在主域的 .htaccess 中,我有一个:

RewriteCond %{HTTP_HOST} ^([^.]+\.)*olddomain\.com
RewriteRule .* - [L]

禁用此类错误。还有其他想法吗?我从几个小时开始就在尝试这个。

编辑:当我发现问题是查询字符串时,我已经用谷歌搜索了。

4

3 回答 3

3

如果要在没有路径和查询字符串的情况下重定向到新域,则必须附加一个空查询字符串

RewriteEngine On
RewriteRule .* http://newdomain.com/? [R=301,L]
于 2013-01-13T20:48:30.463 回答
2

mod_rewrite如果未指定查询字符串,则将查询字符串附加到重写的 URL 。添加一个空的查询字符串来避免问题(添加一个?就足够了):

RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.com/? [R=301,L]

另请阅读有关QSA标志的信息。

于 2013-01-13T21:39:31.840 回答
1

更新:

RewriteEngine On
RewriteCond %{HTTP_HOST} (?:www\.)?oldomain\.com [NC]
RewriteRule ^(.*)$ http://newdomain.com/?  [R=301,L]

更新为示例,而不是答案。

于 2013-01-13T21:22:47.897 回答