URL正規化の方法【.htaccess・canonicalをコピペで簡単設定】
URL正規化とは?
URL正規化とは、重複しているURLを1つのURLに統一することです。
SEO面にも大きな影響があるため、サイト運営において必ず取り組むべき施策のひとつとなっています。
URL正規化の必要性
例えば、「http://example.com/」というURLのページには、以下のURLでもアクセスすることができます。
- https://example.com/
- http://example.com/index.html
- https://example.com/index.html
- http://www.example.com/
- https://www.example.com/
- http://www.example.com/index.html
- https://www.example.com/index.html
これらは、人間がアクセスすると同じ内容のページに見えますが、Googleなどの検索エンジンはそれぞれ違うページと認識してしまいます。
このように、URLは違うけれど同じ内容のページが複数ある状態を「重複コンテンツ」と呼び、サイトの評価が分散して検索順位に悪影響が出たり、コピーしたコンテンツと誤解されてペナルティを受ける可能性もあります。
他にも、URLがわかりずらい・被リンクが分散してしまう・アクセス解析が困難になるなどの様々な問題があるため、人間の目線からみても重複したURLがあることは良くありません。
そのため、検索エンジンに「このURLが正規のURLです」と伝え、URLを1つに統一する必要があるということです。
重複したURLの例
独自ドメインのサイトで必ず発生する「重複したURL」は以下の3つです。
- wwwあり・wwwなし
- https://www.example.com/
https://example.com/ - index.htmlあり・index.htmlなし
https://example.com/index.html
https://example.com/※サイト構成によって、index.php や index.cgiになる場合もあります。
- SSLあり(https)・SSLなし(http)
- https://example.com/
http://example.com/
これら以外にも、PC用とモバイル用ページでURLが違うなどのパターンもあります。
正規にするURLを決める
URLを正規化をする前に、まず正規にするURLを決めておきます。
通常は、「index.htmlなし」「SSLあり(https)」を正規URLにしますが、「wwwあり/なし」については基本的に好みで決めて問題ありません。
「SSLあり/なし」に関してですが、現在のインターネットではSSL化することが標準となっているため、正規にするURLも必然的に「SSLあり」を選ぶことになります。
まだSSL化していないサイトの場合、URL正規化より先にSSL化しておくことをおすすめします。
一度正規化したURLを変更すると検索順位に影響が出てしまうので、正規にするURLは慎重に選ぶようにしてください。
URL正規化の方法
URLを正規化するには、主に以下の3つの方法があります。
確実にURLを伝えるためにも、すべての方法で正規化しておくことをおすすめします。
- .htaccessで正規URLに301リダイレクトする
- rel="canonical"に正規URLを指定する
- サイトマップを正規URLで作成する
これらの方法で指定したURLが検索エンジンに評価され、検索ページにも表示されることになります。
コードをコピペする際は、「example.com」の箇所をご自身のサイトURLに変更してください。
.htaccessで正規URLに301リダイレクトする
.htaccessとは、Webサーバーの挙動を決めることができるファイルのことです。
.htaccessファイルに301リダイレクト(恒久的に移動)の指示を書くことで、正規ではないURLにアクセスしてきたユーザーを正規URLへ強制的に移動させることができ、検索エンジンにも正規URLを伝えることができます。
.htaccessファイルは、レンタルサーバー内のindex.htmlファイルがある場所(WordPressの場合はwp-adminやwp-contentフォルダーがある場所)にあります。
FTPソフトでレンタルサーバーからダウンロードし、メモ帳などのテキストエディタで編集した後、同じ場所にアップロードしなおしてください。
※.htaccessは挙動にかかわる重要なファイルなので、必ずバックアップをとり、記入間違いのないように注意してください。
※.htaccessのルールとして、最後の行を必ず改行(空白の行)にしてください。
※メモ帳で.htaccessの編集をすると「.htaccess.txt」というファイルになってしまうので、FTPソフトでレンタルサーバーにアップロードした後、FTPソフト上で「.txt」の部分を削除してください。
wwwありにリダイレクトする
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
wwwなしにリダイレクトする
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
index.htmlなしにリダイレクトする
※index.phpの場合は、htmlの箇所をphpに変更してください。
※WordPressの場合、このリダイレクトは基本的に必要ありません。
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://example.com/$1 [R=301,L]
SSLあり(https)にリダイレクトする
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
HTMLサイトの設定例:wwwあり、index.htmlなし、SSLあり(https)を正規URLにする場合
※複数同時に指定する場合、最初の「RewriteEngine on」は1つだけにします。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
HTMLサイトの設定例:wwwなし、index.htmlなし、SSLあり(https)を正規URLにする場合
※複数同時に指定する場合、最初の「RewriteEngine on」は1つだけにします。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WordPressサイトの設定例:wwwあり、SSLあり(https)を正規URLにする場合
※複数同時に指定する場合、最初の「RewriteEngine on」は1つだけにします。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
WordPressサイトの設定例:wwwなし、SSLあり(https)を正規URLにする場合
※複数同時に指定する場合、最初の「RewriteEngine on」は1つだけにします。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
rel="canonical"に正規URLを指定する
<link>タグのrel="canonical"属性に正規URLを指定することで、検索エンジンに正規URLを伝えることができます。
※URLは各ページごとに指定する必要があります。
HTMLサイトでrel="canonical"を指定する方法
HTMLサイトでrel="canonical"を指定するには、<head>内に下記のコードを追加します。
「https://example.com/」の部分をページのURLにしてください。
<link rel="canonical" href="https://example.com/">
WordPressでrel="canonical"を指定する方法
WordPressの場合は、SEO対策がされているテーマやSEO系プラグイン(All in One SEO Packなど)を使えば、ページごとに自動で出力されます。
サイトマップを正規URLで作成する
Googleなどの検索エンジンに送信するサイトマップ(sitemap.xmlなど)から正規URLを伝える方法です。
サイトマップを送信することで、検索エンジンにサイト内のページURLをまとめて伝えることができます。
HTMLサイトでサイトマップを作成する方法
HTMLサイトでのサイトマップ作成には、sitemap.xml Editorというサイトがおすすめです。
入力フォームに正規URLを入力すれば、サイト内のリンクからページを自動で取得し、「sitemap.xml」を作成してくれます。
作成したサイトマップは、レンタルサーバー内のindex.htmlファイルがある場所にアップロードし、Google Search Consoleから送信してください。
HTMLサイトの場合は、定期的にサイトマップを作成して、Google Search Consoleから送信する必要があります。
WordPressでサイトマップを作成する方法
WordPressの場合、XML Sitemapsというプラグインを使用すれば、サーバー内に「sitemap.xml」が自動生成されます。
生成されたサイトマップはGoogle Search Consoleから送信する必要がありますが、一度送信すれば後は自動で更新されます。
URL正規化の確認方法
検索エンジンが正規URLを認識しているか確認するには、Google Search Consoleの「URL検査ツール」を使います。
メニューにある「URL検査ツール」を選択してURLを入力し、カバレッジをクリックすれば確認することができます。
「ユーザーが指定した正規URL」が正規化で指定したURLに、「Googleが選択した正規URL」が検査対象のURLになっていればちゃんと認識されています。
無料ブログや無料ホームページでURL正規化ができない場合
無料ブログサービスや無料ホームページサービスでは、.htaccessやheadタグの編集に対応していない場合が多く、URL正規化を完全にはできない可能性があります。
ヘルプなどを見ても解決できない場合は、Google Search Consoleに正規にしたいURLのみを登録し、内部リンクやSNSのリンクも正規にしたいURLにリンクするという方法で対処できます。
また、URL正規化ができない=301リダイレクトに対応していないということなので、例えば無料ブログサービスからWordPressに引っ越したいとなった時などに、サイトの評価を受け継げないというデメリットがあります。
たくさんの人に見にきてもらえるサイト・ブログを目指しているのであれば、最初からレンタルサーバーで始めることをおすすめします。
レンタルサーバーの料金や機能の詳細、キャンペーン情報などについては、レンタルサーバー比較|料金と機能の一覧をご覧ください。
URL正規化の注意点
URL正規化の方法はひとつずつ見ていけば難しくないのですが、SEO面に直接影響する部分でもあるため、きちんと確認しながら行う必要があります。
繰り返しになることもありますが、URL正規化の注意点をまとめておきます。
- 一度正規化したURLを後で変更するとSEO面で悪影響が出るため、正規にするURLは慎重に選んでください。
- すべての方法で正規化し、URLの記述間違いをしないようによく確認してください。
- .htaccessファイルは必ずパックアップを取り、編集後は正規ではないURLにアクセスしてリダイレクトできているかを確認してください。
- サイト内のリンクも正規URLにリンクするようにしてください。