URL正規化とは?www有り無しhtaccessリダイレクト設定方法まとめ

URLの正規化とは

Googleでは1URL1コンテンツが原則とされています。URLが1文字でも違えばそれは別ページと認識されます。例えそれが同じページであったとしてもです。
異なるURLに同一コンテンツが表示されるケースを解決するのが「URLの正規化」といいます。

今回は様々なケースのURL正規化方法を解説していきます。

異なるURLで同一コンテンツが表示されるケース

異なるURLケース URLの例
http ? https http://sample.jp/
https//sample.jp/
wwwのありなし https://www.sample.jp/
https://sample.jp/
ファイル名の有無 https://sample.jp/
https://sample.jp/index.html
https://sample.jp/index.php
URLパラメータの有無 https://sample.jp/
https://sample.jp/?ref=twitter
ページング https://sample.jp/page1/
https://sample.jp/page2/

上記のように1つのページにアクセスしようとしているが、様々なURLでページが表示できてしまう場合、URLを1つに統一する必要があります。

URLが重複するデメリット

  1. SEO視点で、検索順位における評価が分散されてしまう。
  2. クローラビリティの低下
  3. トラッキング・分析に手間が発生してしまう。

SEO視点で、検索順位における評価が分散

1つのページであっても、URLが異なる場合、Googleは別々のページと認識します。URLが複数のURLで閲覧できてしまうと本来同じURLに集まるはずの被リンクも異なるURLに分散してしまう可能性があるのです。そのため被リンク評価も分散します。また、同じページでURLが複数存在してしまうと、Webサイト全体の評価が悪くなる可能性があります。

運営者自身は悪意のあるコンテンツを提供していないが、Googleからは重複コンテンツ扱いになり、悪意のあるコンテンツとしてペナルティを受けてしまう可能性もあります。

クローラビリティの低下

同一ページでもURLが異なる場合、Google bot(クローラ)が本来クロールしたであろうページも増えてしまいます。そのため不用意なページもクロールしてしまうため、クローラビリティが下がってしまいます。

トラッキング・分析に手間が発生

サイトを分析する際、重複ページが存在すると、URLデータの抽出量が増えます。そのため、運用の手間が増えてしまい、手間が発生します。

SEO対策においてURL正規化は必須

上述に置きましたデメリットを解消するために、検索エンジンに正しくURLを伝える必要があります。そのために「URL正規化」の対応が必須となってくるのです。

ペナルティについても少し触れましたが、実際に以下Googleガイドラインも紹介しておきます。URL正規化をしていないコンテンツは明示的に重複コンテンツ扱いに扱いになる可能性を載せています。

一般に、重複するコンテンツとは、ドメイン内または複数ドメインにまたがって存在する、他のコンテンツと完全に同じであるか非常によく似たコンテンツのブロックを指します。多くの場合、偽装を意図したものではありません。悪意のない重複するコンテンツの例には、以下のものがあります。

  • 通常ページと携帯デバイス用の簡易ページの両方を生成するディスカッション フォーラム
  • 複数の異なる URL で表示またはリンクされる商品ページ
  • ウェブページの印刷用バージョン

参考重複するコンテンツSearch Console ヘルプ

URLが正規化されているか確認をしてみましょう。

  • ケース.1
    wwwあり、なしのURLで実際ご自身のサイトにアクセスする
    「http://www.ご自身のURL」のようにwwwがついている状態とついていない状態でアクセスをしてみましょう。両方のページでURLが変わらずページが開いた場合、正規化はされていません。
    www有り、無しどちらかに正規化ルールを決める事をおすすめします。

  • ケース.2
    http – https – 「s」の有り無しでアクセスする
    基本的にサイトはhttpsでなければいけません。httpでのサイトでページにアクセスできてしまう場合URLが正規化されていませんし、セキュリティ面でもよろしくないので、httpへのURLへアクセスした場合、httpsへ301リダイレクトをおすすめします。リダイレクト方法は後述で解説しています。

  • ケース.3
    末尾のスラッシュ
    末尾のスラッシュがついている状態、ついていない状態も確かめましょう。末尾のスラッシュ有無によってもURLが1文字でも変われば正規化されていません。末尾スラッシュをつけることをおすすめします。後述で対応法も解説してます。

  • ケース.4
    ファイル名の有無チェック
    index.html(もしくはindex.php)等のファイル名が有る状態と無し状態のURLパターンでアクセスをしてみましょう。ファイル名有りの状態でページが開いた場合、ファイル名無しの末尾スラッシュに付いた正規化をおすすめします。その理由と対応方法についても後述で解説しています。

正規化の決め方

URLを重複させないために正規化URLのルールを設定します。どのように設定したほうが良いのか、ご確認ください。

http、httpsの「s」について

?正規化ルール

通信暗号化されるhttpsに正規URLを設定しましょう

httpsの「s」がついていると、SSL暗号化といって暗号化した通信方式をつかってWEBサイトを見に行く方式になります。
2018年Google Chromeのブラウザがアップデートし、基本的にhttps対応されていないサイトは、URLバーにエラーがでるようになったのです。そのため、2018年からは基本的にサイトはhttps対応(SSL対応)が必須となってきています。

悪い例 良い例
http://sample.jp/ https://sample.jp/

wwwの有無について

?正規化ルール

wwwが付いていても付いていなくても、どちらでも構いません

wwwの有無について、直接あってもなくても何か支障がるかと言われると、今のところ特にありません。OUTSWAN(当サイト)については、極力URLを覚えやすくしてもらいたく、短く設定したかったため、www無しで設定しています。

悪い例 良い例
なし https://www.sample.jp/
https://sample.jp/

ファイル名の有無について

?正規化ルール

ファイル名無しの正規化ルールにしましょう

ファイル名無しの理由とは?

ファイル名込みで設定していた場合、もし将来的にサイトリニューアル等でサーバーの仕様が変更した場合、今までindex.htmlにてプログラムが動いていたものが、index.phpにしなければ動作しないといった可能性が出てくるケースがあります。そのためファイル名まで記載していると、サイト内リンクに貼られているファイル名をすべてhtmlからphpに書き換え作業が発生するため最悪の場合、修正作業で莫大な工数がかかる可能性があります。基本的にファイル名無しのURLで運用することをおすすめします。

悪い例 良い例
https://sample.jp/category/article/index.html
https://sample.jp/category/article/sample.html
https://sample.jp/category/article/
https://sample.jp/category/article/sample/

URL末尾のスラッシュ有無について

?正規化ルール

URLの末尾に、スラッシュ有のURLにしましょう

こちらも上記のファイル名有無同様にファイル名無しにした場合、基本的には末尾スラッシュで終わるようにしましょう。

host名直後(TOPページ)の末尾スラッシュは正規化しなくてOK

ホスト名直後のスラッシュ(http://sample.jp/)はクローラがスラッシュ有無にかかわらず同一ページとみなしているため、https://sample.jpからhttps://sample.jp/へ正規化する必要はありません。

ここでメモ!

URLの末尾のスラッシュの事をトレイリングスラッシュ (Trailing Slash)とも呼びます。

悪い例 良い例
https://sample.jp/category/article https://sample.jp/category/article/

パラメータの有無について

?正規化ルール

パラメータ無しのURLに正規化しましょう。

基本的にパラメータなしのURLで正規化しましょう。ですが、広告のアクセス解析用パラメータ等でパラメータを付けざる負えない場合はパラメータを付与しなければなりません。
その場合、後述でも解説しますが、canonicalタグの設定が適切な対応方法となります。

悪い例 良い例
https://sample.jp/category/article/?ad=123456 https://sample.jp/category/article/

ケース別正規化の対応方法

基本的に、正規化の方法は2つ存在します。それは、301リダイレクトと、canonicalタグの設定です。ケースごとの対応表を作りました。

重複URLケース 正規URL対応方法
http、httpsの「s」 httpsへ301リダイレクト
ドメイン名のwww有無 www有無、決定したURLへ301リダイレクト
index.htmlのファイル名有無 ファイル名無しのURLへ301リダイレクト
URL末尾のスラッシュ有無 スラッシュ有のURLへ301リダイレクト
※ただしTOPページは含まない
URLパラメータの有無 パラメータ無しのURLをcanonical設定

301リダイレクトと、canonicalの説明は後述で解説します。

301リダイレクトとは?設定方法の紹介

あるページにアクセスすると別のページに移転(ジャンプ)することをリダイレクトと呼びます。そして301とは、HTTPヘッダのステータスコードの事を指します。301とは恒久的な転送を意味しおり、Googleのクローラ向けの対策でサイトの移転やURL正規化をする際に301リダイレクト(恒久的な移転)を設定し、正しいURLをクローラに伝えるのが主な目的とされています。

当サイトでも、http://outswan.com/(sが付いていないURL)にアクセスすると自動的にhttps://outswan.com/へリダイレクト設定しています。その際、301リダイレクトの手段をとっています。
正規化する際も301リダイレクトの設定をするケースもあるので覚えておきましょう。

301リダイレクトの設定については、当サイトでは.htaccessファイルでのリダイレクトを想定とした設定方法をご紹介します。

基本的な.htaccessの記述

RewriteEngine on
RewriteCond %{変数} 条件
RewriteRule 正規前ページURL 正規ページ後URL [R=301,L]

httpからhttpsへリダイレクトする設定

httpsへ301リダイレクト

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

www有り無しのリダイレクト設定

www有りのリダイレクト設定

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sample\.jp$
RewriteRule ^(.*)$ https://www.sample.jp/$1 [R=301,L]

www無しのリダイレクト設定

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sample\.jp$
RewriteRule ^(.*)$ https://sample.jp/$1 [R=301,L]

indexファイル名有りから無しへのリダイレクト

indexファイル名無しへのリダイレクト

RewriteCond %{REQUEST_URI}^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://sample.jp/$1 [R=301,L]

末尾スラッシュ有りへリダイレクト

末尾スラッシュ無しからスラッシュ有りへリダイレクト

RewriteCond %{REQUEST_URI} !/$

RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [R=301,L]

canonicalとは?設定方法についてご紹介

canonicalは「正典」を意味する言葉で、パラメーターなどが付いたURLで自サイトのリンクが発行された際、パラメータ付きURLがGoogleにインデックスされる可能性があります。そういった場合Canonicalタグを使ってパラメータ無しの正式なURLをGoogleに伝えることを目的としたタグになります。その他にもスマートフォンページとPCページでURLが異なる場合にも使用したほうが良い場合もあります。Canonicalタグの正しい設定の仕方について解説します。

Canonicalタグの基本的な書き方

canonicalタグの書き方

<head>
    <link rel="canonical" href="https://outswan.com/">
</head>

スマホ/PCページでURLが異なる場合のcanonical設定

スマホとPCのURLが違う例

PCページ
https://sample.jp/
スマホページ
https://sp.sample.jp/

上記のようにスマホとPCでのURLが異なった場合、どのようにcanonical設定すれば良いか解説します。

PCページにはcanonicalとalternateタグを使用

alternateタグとは、英語で「代替え」という意味です。URLは異なりPCページと内容がほとんど変わらないページや多言語対応をしているページに対してcanonicalタグとalternateタグを使用しましょう。

PC向けhtmlの設定

<link rel="canonical" href="https://sample.jp/">
<link rel="alternate" media="only screen and (max-width: 640px)" href="https://sp.sample.jp/">

スマホページにはPCページURLを設定したcanonical

スマホページには、デスクトップページが存在しているという事をGoogleに伝える為、PCページのURLを設定したcanonicalタグを記述しましょう。

スマホ向けhtmlの設定

<link rel="canonical" href="https://sample.jp/">

ページングの理想的なcanonical設定

コンテンツ数が多くなり、1ページで収まらない場合、ページングを使ってコンテンツを分割するサイトも数多く存在します。
その際に1ページ目、2ページ目、3ページ目といったページ毎のcanonical設定はどのように設定するべきか、解説します。

ページングURLの例

https://sample.jp/page/1/
https://sample.jp/page/2/
https://sample.jp/page/3/
https://sample.jp/page/4/

上記のようなページングURLが存在した場合、悪い設定と良い設定を合わせて解説します。

悪い設定
<!-- 2ページ目 -->
<link rel="canonical" href="https://sample.jp/page/1/">
<!-- 3ページ目 -->
<link rel="canonical" href="https://sample.jp/page/1/">
<!-- 4ページ目 -->
<link rel="canonical" href="https://sample.jp/page/1/">

悪い設定については、2ページ目以降のページ全て同じURLが設定されているため、よろしくありません。

良い設定
<!-- 2ページ目 -->
<link rel="canonical" href="https://sample.jp/page/2/">
<!-- 3ページ目 -->
<link rel="canonical" href="https://sample.jp/page/3/">
<!-- 4ページ目 -->
<link rel="canonical" href="https://sample.jp/page/4/">

上述のように、各ページ別々でURLを記載するように設定しましょう。

正規化後の内部リンクURLの統一

上述のように、301リダイレクト、canonicalの設定をしたからといって、内部リンクのURLが統一されていなければ、同じように評価が分散してしまう可能性があります。内部リンクの統一も抑えていきましょう。

内部リンクが統一されていないケース

前述にもお伝えした通り、内部リンクが統一されていなくても、301リダイレクト設定されていれば問題ないのでは?と思いがちですが、そもそも内部リンクが統一されていないがために、アクセス前に301リダイレクトする余計なhttpプロセスが走ってしまいます。そのため、読込スピードに影響を及ぼす可能性があるため、内部リンクも必ず統一していくことをおすすめします。

内部リンクの統一ルールのポイント

  • indexファイル名の有無
  • 末尾スラッシュの有無
  • wwwの有無
  • httpとhttpsの混在

なお、2018年にGoogle Chromeブラウザのアップデートにより、HTMLソース内にhttpでのリンクが混在されている場合であっても、URLバーに保護されていない通信とエラーが出現されるため、HTTPSの混在は必ず避けるべきです。

まとめ

いかがだったでしょうか。様々なURLの正規化のパターンをご紹介させていただきました。
URLが1文字でも変わるだけで重複コンテンツになりかねないため、正しくcanonical設定と301リダイレクトの設定を行いましょう。
そうすることによって、マイナスSEO評価をプラスの方向にもっていくことができますので、今一度ご自身のサイトで試してみてもらえると嬉しいです。