.htaccessでリダイレクト
ドメインを変更した際に,旧ドメインにアクセスした場合に新ドメインへ転送するのですが,この場合,【.htaccess】という特殊なファイルが使用されます.他にもいろいろ方法はあるようですが,よく判らないので,ここでは【.htaccess】で進めていきます.
何がやりたい?
今回,
https://abc.foo.com/before/ から https://def.bar.net/after/ へ転送する
設定で,悩みましたのでここにメモを残しておきます.
転送方法は【一時的:302】では無く【恒久的:301】になります.
旧ドメインから新ドメイン
ネットで探すと...ドメインに変更だけの場合は至極簡単に
Redirect permanent / https://def.bar.net/
と,直接的に書くか
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{http_host} ^abc.foo.com
RewriteRule ^(.*)https://def.bar.net/$1 [R=301,L]
</IfModule>
等と書くようですが,今回はディレクトリも変わります.
以下,<IfModule...>・・・</IfModule>は省略.
同じドメイン内のディレクトリ間移動
ディレクトリ単位での移動は,
Redirect permanent /befor/ https://def.bar.net/after/
と,直接的に書くか
RewriteEngine on
RewriteRule ^ befor(.*)$ / after$1 [R=301,L]
等となります.
ドメインとディレクトリを同時に変更
今回は,ドメインとディレクトリを同時に変更したのですが,こういうリダイレクトの方法がなかなか判らなかったのです.
正規表現を今ひとつ理解し切れていないために,堂々巡りが続いて...
と言うか,
abc.foo.com/befor/.htaccess
で設定していたのが間違いでした.
結局,ドメインルートの【.htaccess】ファイルで設定することに気付いたと言う話です.
こうなりました...
abc.foo.com/.htaccess
に,以下の様な設定を最初の方に書き加えただけで上手く機能しました.
Redirect permanent /befor/ https://def.bar.net/after/
結局・・・な~んだと言う事ですが,設定する位置を間違っていただけでした.
コメント