301 リダイレクトと .htaccess ファイルの記述方法
UB3/informatics/html/redirect_301
このページの最終更新日: 2022/05/16- 概要: 301 リダイレクトとは
- その他のリダイレクト方法
- 301 リダイレクトによる URL の正規化
- www なしに統一する正規化
- http と https の正規化
- 拡張子なしに統一する正規化
- index.html をなくす
- 特定のフォルダをリダイレクトから除外する
- 古いサイトから現サイトへの 301 リダイレクト
- いつまで 301 リダイレクトを残しておけばいいのか
広告
概要: 301 リダイレクトとは
301 リダイレクトとは、ウェブサイトを移転する際などに、
主な用途は、このページで説明する「URL の正規化」と「サイト移転」である。リダイレクトすることによって、次のようなメリットが生じる。
- 古いページにたどり着いたユーザーが、新しいページをみつけられる。
- 検索エンジンの評価である SEO を引き継ぐことができる。
その他のリダイレクト方法
他にもいくつかリダイレクトの方法があるが、Google はこの 301 リダイレクトを推奨している。その他のリダイレクト方法とは、
- 302 リダイレクト: 301 と似ているが、一時的な転送。
- Javascript でもリダイレクトが可能であるが、非推奨である。
- meta タグでリダイレクトが可能だが、これも非推奨。
また、古いサイトの URL を全部新サイトのトップページに転送するのも非推奨である (1)。
301 リダイレクトによる URL の正規化
このサイトでは、以下の 3 点において 301 リダイレクトで URL の正規化を行なっている。
- www をなしに統一
- http と https を https に統一
- ファイルの拡張子をなしに統一
それぞれについて、.htaccess ファイルの書き方を述べる。
www なしに統一する正規化
ultrabem-hobby.com というドメインのサイトを例に説明。以下の文章を .htaccess に加えることによって、www なしに統一している。
|
それぞれの意味を解説する。
Options +FollowSymLinks |
|
RewriteEngine on |
301 リダイレクトでは、「要求されたリクエスト URL を Apache の "mod_rewrite" 拡張モジュール (URL書き換えエンジン) を使用し、 正規表現を使って書き換え」るという作業を行なっている (3)。 つまり実際の作業は「書き換え Rewrite」であり、そのモジュールを起動せよという命令文がこれである。 一度 on にすれば OK なので、その他の正規化を続けて行うときには、この命令を繰り返す必要はない。 |
RewriteBase / |
URL 書き換えの基点となるパスを設定する。省略可能。.htaccess があるパスが基点であり、それが / になる。 |
RewriteCond |
書き換えの対象となる文字列を記載する行 (3)。
以上によって、ultrabem-hobby.com および www.ultrabem-hobby.com の両方を書き換えの対象として指定している。 |
RewriteRule |
上記のパターンに合致した文字列を書き直すときのルールがこの行に記載される (3)。
|
http と https の正規化
なぜこれで動くかわからないのだが、http でアクセスすると https に飛ばされるので、機能している。勉強して更新。
|
拡張子なしに統一する正規化
このページ に従い、以下を加えると拡張子なしでもアクセスが可能になる。php と html と両方。
|
ただし、これだけだと拡張子ありとなしが共存しており、リダイレクトされていない。あくまで、拡張子なしのアクセスを可能にする記述である。
そこで、拡張子ありのページからなしのページにリダイレクトする以下の記述も追加する。
|
URL を省略するメリットとして、以下の 2 点がある (5)。
- 動的なページを作るために、php のファイルに変更した際にも URL を同一に保つことができる。
- 短くて見やすい。
.html なしの方がわずかにメリットがあるが、SEO 的な問題はないようだ。このサイトは拡張子ありで始めてしまったが、2019 年 7 月の URL 正規化で拡張子なしに統一した。
index.html をなくす
一般的にはこれでよい。
|
ただし、上記の記述では index.html をリダイレクトするようにしている。しかし、すでに別の記述によって index.html の拡張子が取り去られているので、それに対応しなければならない。よって、「または」を示す | 記号と使って以下のようにする。
|
この件はネット上にあまり情報がなかったので、teratail の質問 で助けて頂きました。ありがとうございました。
特定のフォルダをリダイレクトから除外する
いろいろとネット上で情報はみつかるが、このページ にあるように、トップフォルダの .htaccess でサイト全体をリダイレクトしつつ、除外したいフォルダにも .htaccess を設置して RewriteEngine off とするのが簡単。
広告
古いサイトから現サイトへの 301 リダイレクト
基本的な方法: URL を記載
かつて FC2 というサーバーに Ultrabem 2 というサイトを作っていたが、これは完全に閉鎖し、UBC および UB3 に該当ページがある場合には 301 リダイレクトするように設定した。
いろいろな .htaccess の記述方法があるが、現在のところ次のように 1 個ずつ URL を記述し、うまく動いている。RewriteEngine on などの記述はいらないようだ。
Redirect 301 /aa_carbo_lipids/aa/carnitine.html https://ultrabem.com/aa_carbo_lipids/aa/carnitine.html Redirect 301 /aa_carbo_lipids/aa/cys.html https://ultrabem.com/aa_carbo_lipids/aa/cys.html |
フォルダの名前が基本的に同じなので、まとめて記述するとちょっと転送が早くなるはずだが、どうも上手く動作しないので、仕方なくファイルを 1 個ずつ書いている。
サーバーに余計な負担をかけていることになって心苦しいが、2000 行書いて 12 ms 遅くなるという実験結果があり (1)、自分の場合はせいぜい数百行なので、許される範囲だと考えたい。
いつまで 301 リダイレクトを残しておけばいいのか
1 週間か 1 月か 1 年か 10 年か、という大まかな目安で言うならば、
Google のジョン・ミュラーという人のコメントが根拠。ただし、これはもちろん「1 年経ったら何でも外していい」という意味ではなく、以下のような点を考える必要がある。
- リダイレクト元の URL にアクセスがあるかどうか。アクセスがあるならば、リダイレクトを外すと当然トラフィックを失うことになる。
- このトラフィックの問題の他に、「検索エンジンの評価」という問題がある。旧 URL にリンクが張られていれば、それは 301 リダイレクトしている限りは新 URL に引き継がれるが、外すとこれがなくなる。
- これを考える限り、ずっと残しておいて損はないということになりそうだ。
References
- サイトリニューアル時の301リダイレクト、.htaccess記述方法いろいろ. Link.
- .htaccessに2000行書くとApacheの処理が何秒遅くなるか測ってみた. Link.
- .htaccess - URLの書き換え. Link: Last access 2019/07/14.
- グーグル公式「301リダイレクトは1年経ったら外していいよ」発言の真意とは?【SEO記事12本まとめ】 Link: Last access 2021/11/24.
広告
コメント欄
各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。
禁止ワード: http, the, м (ロシア語のフォントです)
|
|
このページにコメント
これまでに投稿されたコメント
Date | Name | Comment |
---|