見出し画像

検索エンジンの登録で苦戦中

SEOを初めて行う私が、SEOで苦戦している内容を記載する。

前書き

 やっと「テクノロジーの本質を伝えるサイト」のドメイン申請を完了し、アップロードが完了して、いざGoogle Search ConsoleやBing Webマスターツールに登録しようとしたが、検索エンジンのインデックスの扱いが難解だった。今回は苦戦した内容について書きます。

 ただし、この記事は私が試した方法を書いているだけであり、その方法で検索エンジンにインデックスされることを保証するものではありません。

特に苦戦した点

 特にSEO関連で苦戦するところは、検索しても、知っている人にしかわからないような説明しか見つからないことと、説明するサイトによって言及する内容が異なるので、Google検索による調査が比較的難しいところにあります。

何故英語版があるのか

 英語圏の人が見てくれるようになればありがたいという意図もありますが、本格的に英語圏の人に読んでもらうためには、サーバーもグローバルである必要があるため、サーバーはAWSにする必要であるとされている…ことを後で知りました。しかし、AWSでApacheのWebサーバを運用するにはそれなりの知識も必要です。

 私が借りたレンタルサーバもそれなりの知識は必要ですが、Apacheのインストールやドメイン設定やDNSの設定は既に行ってくれていますので、まだ楽であると思います。

 ではなぜ英語版を用意したのかというと、結構曖昧さが存在の存在する日本語とは違い、英語には似た意味を持つ単語が複数あっても、殆どの場合は使い分けが存在するので、論理的な意味合いを保持できる言語である利点がありますので、どちらかというと自分用のメモに近い部分があります。

 しかし、私は翻訳は得意ではありませんので、翻訳にも労力が費やされます。読んでもらっている人が少なければ、削除する可能性もあります。

正規化

 基本的に検索エンジンはプログラムなので、


http://www.example.com/ja/
https://example.com/ja/
https://www.example.com/ja/
https://www.example.com/ja
https://www.example.com/ja/index.html

以上のページは違うものとして認識されるようです。そのため、評価が分散してランキングが下がるということらしいです。それで、同一と見なされるページを検索エンジンのインデックスから除外する行為を正規化と呼ばれるそうです。

 それで、決定すべきパターンとして、
・httpにするかhttpsにするか
・「www」の有無
・末尾の「/」の有無
・「index.html」または「index.php」の省略の有無
が考えられる。

私はそれに対して
・httpにするかhttpsにするか:httpsにする。
・wwwの有無:「www」をつける
・末尾の「/」の有無:「/」をつける
・「index.html」または「index.php」の省略の有無:省略しない
という選択をした。

 index.phpまたはindex.htmlを省略するかどうかは人それぞれだと思いますし、実際省略している人が大多数だと思いますが、私があえて省略しない形で検索エンジンのインデックスに登録しようとしているかというと、管理が楽だからです。

 ファイル名をあえて省略しないことによって、必然的に「/」も省略できないようになります。つまり、検索エンジンに認識させる処理は必要とはいえ、頭の中での一貫性が保てます。正規化の実際の処理は、強制的にhttpsにする時も、index.phpを省略しない処理も、基本的に.htaccessから301リダイレクトされるという処理です。

 これで、検索エンジンではindex.phpが省略されないとともに、自分自身がURLを人にPRするときは省略したURLを紹介できると思われます。人に紹介するときとインデックスに登録されているURLが違っていても、実際に訪れる場合は.htaccessが飛ばしてくれるからです。

多言語対応

 自動的に言語を振り分けるページは、ブラウザの言語によってリダイレクト先が違うので、検索エンジンが誤判定する恐れがあるため、検索エンジンにインデックスさせないようにする必要があるそうです。それを知るまでは、自動的に言語を振り分けるページのPHPコードで、そのまま301リダイレクトを行っていました。

 因みに.htaccessまたはPHPで301リダイレクトを行うと、検索エンジンではリダイレクト元とリダイレクト先が同じページとして認識されるようです。

 なので、自動的に言語を振り分けるページは、検索エンジンにインデックスさせたくないので、同じページとして認識されないよう、意図的にPHPでHTMLコードを吐き出す→HTMLのmetaタグの301リダイレクトを行った。

 また、PHPでHTMLコードを出力する際、301リダイレクトを行うmetaタグと共に、NOINDEXのmetaタグも出力することによって、インデックスされないようにしようと試みている。

 その上で、それぞれの言語のトップページをインデックスさせる必要がある。ただし、言語が違っても内容は同じなので、もしHTMLのmetaタグで指定する場合は、headタグ内のmetaタグでhreflangを指定する必要がある。

 詳細は「ページのローカライズ版について Google に知らせる」の「代替ページを指定する方法」の「HTML タグ」の項目の下矢印を押すと、確認できます。

 Googleによると

ページの各バージョンへのリンクを指定した <link> 要素を一式作成し、それを各バージョンの <head> 要素に、そのページ自体へのリンクも含めて指定します。ページのどのバージョンについても、同じリンク一式を指定することになります。

参照元:「ページのローカライズ版について Google に知らせる」の「代替ページを指定する方法」の「HTML タグ」

とありますので、全ページに、そのページ自体のリンクも含めて、対応言語全てのリンクを記述する必要があるとわかった。他の説明サイトではそれと違う説明をしているサイトもいくつか見受けられた。

サイトマップ

 作り始めなのでページ数が少ないので、手で書くことができた。サイトマップでも言語設定が可能です。

 詳細は「ページのローカライズ版について Google に知らせる」の「代替ページを指定する方法」である点は同じですが、今度は「サイトマップ」の項目の下矢印を押すと、確認できます。

 また、言語を自動振り分けするページ等、インデックスしてほしくないページのURLは載せなくてもよいらしい。

まとめ

●多言語化の理由:英語圏が見てくれればありがたいが、主な目的は自分用のメモ。
●正規化:検索エンジンはプログラムなので融通は利かない。
・.haccessで301リダイレクト。
●多言語化
・インデックスしない:HTMLのmetaタグでNOINDEXタグを指定。
・インデックスする:ページ自体のリンクも含めて、対応言語全てのリンクをmetaタグで指定。
●サイトマップ
・インデックスする:記述する。言語指定は可能。
・インデックスしない:サイトマップに書かない。

 ただし何度も言いますが、この記事は私が試した方法を書いているだけであり、その方法で検索エンジンにインデックスされることを保証するものではありません。また、細かな問題には別の対処が必要である可能性があります。

 

記事を最後まで読んでいただきありがとうございます。サポートを頂けるなら、助けになります。