URL の正規化:
301 リダイレクトと .htaccess ファイルの記述方法
UB3/informatics/html/redirect_301
このページの最終更新日: 2024/09/30- 概要: 301 リダイレクトとは
- その他のリダイレクト方法
- 301 リダイレクトによる URL の正規化
- www なしに統一する正規化
- http と https の正規化
- 拡張子なしに統一する正規化
- index.html をなくす
- 特定のフォルダをリダイレクトから除外する
サイト移転時の 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 点がある。
- 動的なページを作るために、php のファイルに変更した際にも URL を同一に保つことができる。
- 短くて見やすい。
.html なしの方がわずかにメリットがあるが、SEO 的な問題はないようだ。このサイトは拡張子ありで始めてしまったが、2019 年 7 月の URL 正規化で拡張子なしに統一した。
index.html をなくす
一般的にはこれでよい。
|
ただし、上記の記述では index.html をリダイレクトするようにしている。しかし、すでに別の記述によって index.html の拡張子が取り去られているので、それに対応しなければならない。よって、「または」を示す | 記号と使って以下のようにする。
|
この件はネット上にあまり情報がなかったので、teratail の質問 で助けて頂きました。ありがとうございました。
特定のフォルダをリダイレクトから除外する
いろいろとネット上で情報はみつかるが、このページ にあるように、トップフォルダの .htaccess でサイト全体をリダイレクトしつつ、除外したいフォルダにも .htaccess を設置して RewriteEngine off とするのが簡単。
広告
References
- ページ分割に伴い削除
- .htaccessに2000行書くとApacheの処理が何秒遅くなるか測ってみた. Link.
- .htaccess - URLの書き換え. Link: Last access 2019/07/14.
- ページ分割に伴い削除
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。