Googleさんの号令により昨今お世話になるリイレクトで、一番多いケースは、http→httpsのリダイレクトです。https化では、URL自体が変化することはまずありませんが、以前のページの評価を引き継いだままリダイレクトするには「301リダイレクト」が必要です。「301リダイレクト」は、リニューアルなどで元のページのURLが恒久的に変更される場合に使う転送方法で、転送前のURLが持っていた被リンク等の評価が、転送先のURLにそのまま引き継がれます。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
上記のようなケースで何か問題が起こることは、滅多にありません。
さて、今回サイトのリニューアルで必要になったリダイレクトの条件は以下でした。
(1)ドメイン名自体が変更になった(.org → .com)
(2)ドメインは、同じサーバにマルチドメインで運営されている
(3)マルチドメインの構成は、ルートにorgが設定されており、そこに入れ子で「.com」用のフォルダがあり、「.com」ドメインをあてている
そこで、まず301リダイレクトをかけました。
RewriteEngine On
RewriteRule ^(.*)$ https://△△△.com/$1 [R=301,L]
通常はこれで良いのですが、今回(3)が問題で、リダイレクトループのエラーが出てしまいました。
そこで以下の記述に変更しました。
RewriteCond %{HTTP_HOST} ^(△△△\.org)(:80)? [NC]
RewriteRule ^(.*) https://△△△.com/$1 [R=301,L]