.htaccess 将所有域的所有站点重定向到不带尾随查询字符串的新域

dy1byipe  于 2022-11-16  发布在  其他
关注(0)|答案(4)|浏览(121)

我想将旧域上的所有请求重定向到新域的主页(根站点)。我认为它可以与以下内容一起使用:

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

(see:.htaccess redirect all pages to new domain),但由于一个奇怪的原因,例如,当我尝试访问URL www.example.com时www.olddomain.com/faq/pdf.php?cat=7&id=93&artlang=de我被重定向到www.newdomain.com/?cat=7&id=93&artlang=de。可能是什么问题?
在过去我遇到了一些问题,因为这个域是在一个子目录(作为addon-domain)我的新的main-domain,但在.htaccess的main-domain我有一个:

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

它可以消除这种错误。还有别的办法吗?我已经试了好几个小时了。
编辑:当我发现问题出在查询字符串上时,我在谷歌上搜索了一下。

643ylb08

643ylb081#

如果要重定向到新域而不使用路径和查询字符串,则必须追加空查询字符串

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

niknxzdl2#

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

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

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

mf98qq94

mf98qq943#

更新日期:

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

更新作为一个例子,而不是作为一个答案。

c0vxltue

c0vxltue4#

使用rewrite从旧域重定向到包含完整路径和查询字符串的新域:
选项+遵循符号链接重写引擎重写规则^(.*)http://www.newdomain.com %{请求URI} [R=302,NC]

相关问题