将所有域的所有站点重定向到新域,而不追踪查询字符串

时间:2013-01-13 20:14:05

标签: .htaccess mod-rewrite redirect url-rewriting

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

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

(参见:.htaccess redirect all pages to new domain)但由于一个奇怪的原因,当我尝试访问网址www.olddomain.com/faq/pdf.php?cat=7&id=93&artlang=de我被重定向到www.newdomain.com/?cat=7&id=93&artlang=de。可能是什么问题?

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

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

禁用此类错误。还有其他想法吗?我现在正试着这几个小时。

编辑:当我得到问题是查询字符串时,我用google搜索。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

更新:

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

作为示例更新,而非作为答案。

答案 2 :(得分:1)

如果未指定查询字符串,

mod_rewrite会将查询字符串附加到重写的URL 。添加空查询字符串以避免此问题(添加?就足够了):

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

另请阅读QSA标志。