2022年05月18日
Google 検索の結果に表示される URL を統一する
サーバーやバーチャルホストに複数の名前が割り当ててあるなど一つのコンテンツへ複数の URL でアクセス可能なサイトについて、Google 検索に複数の URL が表示されることがあります。
そのような場合、そもそもサーバーやバーチャルホストに複数の名前を割り当てなければ、アクセスできず、Google 検索に複数の URL が表示されることはありません。 しかし、サーバーの仕様などで複数の名前が割り当てられる状況を変更できない場合もあり、そのような環境について、Google 検索に複数の URL が表示されることを回避、表示される URL を統一する方法を紹介いたします。
紹介する対策の前提状況
本記事では取り上げる対策は下記のケースを想定しています。
- バーチャルホストに複数の名前が割り当てられるなど、サーバー上の一つのファイルを複数の URL で表示できる
- https://example.powercms.jp/4022/03/01.html
- https://example.com/4022/03/01.html
- URL についてホスト名より後のパスは共通する
- /4022/03/01.html
- ホスト名が
example.com
の URL は Google 検索に表示したい - ホスト名が
example.powercms.jp
の URL は Google 検索に表示させたくない- Google 検索に表示させたくない URL はアクセスできなくてもよい
表示させたくない URL から表示させたい URL へ永続的リダイレクトを行う
表示させたくない URL から表示させたい URL へリダイレクト (永続的リダイレクト) を行うと、リダイレクト後の URL が Google 検索に表示されます。
例えば Apache のリライト機能 (mod_rewrite) が利用できる場合は下記のような設定になります。
例: example.com
以外のアクセスを example.com
へ 301 リダイレクトする設定
RewriteEngine on RewriteCond %{HTTP_HOST} !^example\.com$ [NC] RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
例: example.powercms.jp
へのアクセスを example.com
へ 301 リダイレクトする設定
RewriteEngine on RewriteCond %{HTTP_HOST} =example.powercms.jp [NC] RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
PowerCMS から .htaccess を出力する場合、ウェブサイト URL に表示させたい URL を設定していれば下記のような記述ができます。
RewriteEngine on RewriteCond %{HTTP_HOST} =example.powercms.jp [NC] RewriteRule ^ https://<$MTWebsiteHost$>%{REQUEST_URI} [R=301,L]
Google 検索では永続的リダイレクトが設定されている URL についてはリダイレクト後の URL を表示する仕様のため、この設定ではステータスコード 301 でリダイレクトを行っています。
なお、永続的リダイレクトを行う方法は複数ありますが、無限ループに陥らないように注意してください。
canonical 属性を設定し URL の正規化を行う
URL に canonical 属性が設定されていると Google 検索は指定された URL を正規ページして表示します。
例: HTML ファイルに canonical 属性を設定する記述例
<link rel="canonical" href="https://example.com/" />
canonical 属性は複数デバイス向けに複数ページを出力するサイトで多く使われますが、本件のように同じコンテンツを複数 URL でアクセスできる場合にも有効な設定です。
canonical 属性は HTML ファイルに指定できるため紹介する対策の中で敷居がもっとも低いですが、その場合に対策が行えるのは HTML のみで、画像や PDF など HTML 以外のファイルには対策できません。 HTTP ヘッダーで canonical 属性を指定することもできますが、サイト全体で HTTP ヘッダー に canonical 属性を設定されるのであれば、先に紹介しました永続的リダイレクトを行う設定の方がシンプルでおすすめです。
表示させたくない URL へのアクセスを禁止する
表示させたい URL のみアクセスを可能にし、表示させたくないその他の URL についてアクセスできなくする方法が有効です。
例: example.com
以外でアクセスされた場合に 403 Forbidden エラーを返す mod_rewrite の設定
RewriteEngine on RewriteCond %{HTTP_HOST} =example.powercms.jp [NC] RewriteRule ^ - [F]
Google 検索はエラーページについて表示の優先度を低く扱うため、エラーページと認識させることで表示されにくくなります。
サーバーの仕様などで複数の名前が割り当てられる場合も、mod_rewrite などウェブサーバーのリライト機能が利用できる場合、表示させたくない URL へのアクセスに対して意図的にエラーを返すことができます。
- カテゴリー
- サイト制作全般
コメントを投稿する