301リダイレクトとcanonicalは、どちらもURLの統一で使われます。ただし、ブラウザを実際に移動させるか、検索エンジンへ正規URLを伝えるかが違います。
一言でいうと
301リダイレクトは利用者を別URLへ移動させる設定で、canonicalは検索エンジンへ正規URLを伝えるHTML上のヒントです。
まず比較
| 項目 | 301リダイレクト | canonical |
|---|---|---|
| 動き | ブラウザを別URLへ移動させる | ページ内で正規URLを示す |
| 対象 | 利用者、ブラウザ、検索エンジン | 主に検索エンジン |
| HTTPステータス | 301 Moved Permanently | 200 OK のHTML内に書く |
| 使う場所 | サーバー、CDN、ホスティング設定 | HTMLのhead |
| 強さ | 強い | ヒントとして扱われる |
301リダイレクト
301リダイレクトは、URLが恒久的に移動したことを示します。
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/
たとえば、http://example.com/ へ来た利用者を https://www.example.com/ へ移動させる時に使います。
canonical
canonicalは、HTML内で「このページの正規URLはこれです」と伝えるタグです。
<link rel="canonical" href="https://www.example.com/" />
ページはそのURLのまま表示されます。利用者のブラウザは移動しません。
使い分け
| 状況 | 優先する対応 |
|---|---|
| wwwあり・なしを統一したい | 301リダイレクト |
| HTTPをHTTPSへ統一したい | 301リダイレクト |
| 旧URLから新URLへ移行したい | 301リダイレクト |
| 並び順やクエリ違いの重複を示したい | canonical |
| 同じ内容の一覧ページが複数ある | canonicalを検討 |
利用者を実際に移動させたいなら301、検索エンジンへ正規URLを伝えたいならcanonicalを使います。
両方使うこともある
URL移行では、301リダイレクトで新URLへ移動し、新URL側のHTMLには自分自身へのcanonicalを置くことがあります。
http://example.com/page
-> 301
https://www.example.com/page
-> canonical: https://www.example.com/page
ただし、矛盾した設定にしないことが重要です。
よくある失敗
| 失敗 | 何が問題か |
|---|---|
| 301先とcanonical先が違う | 正規URLの意図がぶれる |
| canonicalだけでwww統一しようとする | 利用者は移動しない |
| 一時的なABテストに301を使う | 恒久移動として扱われる |
| リダイレクトがループする | ページが表示されない |
よくある誤解
| 誤解 | 実際 |
|---|---|
| canonicalを書けばURLが変わる | ブラウザは移動しません |
| 301はSEO専用 | 利用者の移動にも関係します |
| 302と301は同じ | 一時移動と恒久移動で意味が違います |
| canonicalは必ず検索エンジンに採用される | ヒントとして扱われます |
まとめ
301リダイレクトは利用者を別URLへ移動させる仕組み、canonicalは検索エンジンへ正規URLを伝える仕組みです。wwwあり・なしやHTTP/HTTPSの統一には301を使い、重複URLの整理にはcanonicalを補助的に使います。
参考リソース
- Google Search Central: How to specify a canonical URL
- MDN: 301 Moved Permanently
- RFC 9110: HTTP Semantics