サブドメインからメイン ドメインへの 301 リダイレクトを設定しようとしていますが、古い URL にクエリ文字列が含まれていると問題が発生します。
新しいサイトでは、PHP を aFastCGI プロセスとして実行しています。ここにリストされているソリューションを使用してみました: https://expressionengine.stackexchange.com/questions/5188/301-redirects-appending-query-string ほとんどの URL で機能しますが、古い URL にクエリ文字列がある場合は機能しません。
例えば、
RewriteRule ^old-blog/title/?$ http://www.example.com/new-blog/title/ [L,R=301]
old.example.com/old-blog/title を www.example.com/new-blog/title にリダイレクトするように動作しますが、クエリ文字列を含むページで問題が発生しています。私はこれを使ってみました:
RewriteRule ^Default\.aspx?/?$ http://www.example.com/new-blog/ [L,R=301]
ただし、old.example.com/default.aspx?title のような URL は、www.example.com/new-blog/ ではなく、www.example.com/new-blog/?title にリダイレクトされます。
クエリ文字列が新しい URL に追加されないようにすることはできますか?
また、上記の最初の方法を使用してまだ www.example.com/new-blog/ にリダイレクトされていないすべてのリンクを一括リダイレクトする方法はありますか?
問題があるかどうかはわかりませんが、新しいサイトは ExpressionEngine を実行しており、htaccess を使用して URL から index.php を削除していますが、上記の htaccess ルールは古いサブドメインにあります。