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にクエリ文字列を追加します。問題を回避するために空のクエリ文字列を追加します(aを追加する?だけで十分です)。

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 に答える