JP / EN

広告
2023/01/23

301リダイレクト:Apache2での.htaccessを介した設定

タグ: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, ...)なども使える。
RewriteCondとRewriteRuleはペアで設定するようになっており、 RewriteCondとその直後のRewriteRuleが対応するようになる。 注意点として、正規表現対応のためアドレス内の"."はエスケープする。 また.htaccessのファイル自体は644 (rw/r/r) の権限になっているようにする。

動作確認

mkfj.sakura.ne.jp にアクセスして wonderhorn.net にリダイレクトされるか確認する。

次に wonderhorn.net/index.html から wonderhorn.net にリダイレクトされるか確認する。どちらもOKだった。


このエントリーをはてなブックマークに追加

https://wonderhorn.net/