web
そこで301リダイレクトをApache2サーバに設定してみた。
SEO上はGoogle botにリダイレクトを確実に知らせるためにHTTPベースのリダイレクトを301で 行うことが重要である。 このような効果は302リダイレクトやjavascriptによるリダイレクトでは実現できないので、 Apache2のアクセス制御を.htaccessで設定する必要があるのだ。
設定例
著者の個人サイト wonderhorn.net (今あなたが見ているサイトです)で設定したみた。 このサイトには実は旧アドレス(サーバ契約時にさくらインターネットからもらったアドレス、サブドメインを使用) mkfj.sakura.ne.jp/ が存在する。これを本アドレスに統合しようと思う。Apeche2のプラグインmod_rewriteが有効化されていれば、.htaccessなるファイルを ルート直下において置けばここにリダイレクトのルールも書いておける。 mod_rewriteの有効化は自分のサーバなら
LoadModule rewrite_module modules/mod_rewrite.so
をhttpd.confに追記&再起動で設定できる。レンタルサーバなら管理者次第である(流石にデフォルトでONのところが多いかとは思うが)。
なお.htaccessは他のアクセス制御周りの設定と共用なので変更時は要注意。
RewriteEngine on RewriteCond %{HTTP_HOST} ^mkfj\.sakura\.ne\.jp RewriteRule (.*) https://wonderhorn.net/$1 [R=301,L] RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://wonderhorn.net/$1 [R=301,L]書く項目は
RewriteEngine
: リダイレクト(= urlの書き換え)を有効化RewriteCond
: リダイレクトを発動させる条件、%{HTTP_HOST} ホスト名か %{THE_REQUEST} リクエストパスのどちらかを正規表現で検査するRewriteRule
: 置換ルール、正規表現でグルーピング("()")、変数の参照($1, $2, ...)なども使える。
動作確認
mkfj.sakura.ne.jp にアクセスして wonderhorn.net にリダイレクトされるか確認する。次に wonderhorn.net/index.html から wonderhorn.net にリダイレクトされるか確認する。どちらもOKだった。