代替ページ(適正なcanonicalタグあり)メールで
存在しないURLからのアクセスに気づいた話
サイトを運営していると、何かとお世話になるGoogleの解析ツール「サーチコンソール」。
今回は、サーチコンソールからの通知メールで気づいた「存在しないURL(ディレクトリパス)」からのアクセスについて、個人的に調べたことをまとめてみました。
専門家というわけではないので、齟齬や解釈違いなどあるかも知れませんが、ネットでも情報が少なく混乱したできごとだったので、ちょっとシェアできたらと思います、
ページがインデックスに
登録されない新しい要因?
発端は、Googleサーチコンソールから届いた「ページがインデックスに登録されない新しい要因」というメール。
ページがインデックスされない理由は色々ありますが、検索結果に出したいページなら、問題は解消しておきたいものですよね。
早速、サーチコンソールへ飛んで確認してみると、そこには「代替ページ(適正なcanonicalタグあり)」の文字が。
「canonical」を間違えて書いてしまったのかな? と該当URLを確認してみると、見慣れないURLが……。
「https://ドメイン.com/ページ.html/1000」※イメージ例。
「https://ドメイン.com/ページ.html/ページ.html」※イメージ例。
……???
サイト内のページURLに、もう1つディレクトリがくっついている……。
全く作った覚えのないディレクトリでしたが、「寝ぼけて謎フォルダを設置してしまったのか?」とサーバー内を確認しました。
しかし、そんなフォルダはありませんでした。
存在しないURLからアクセスできるって?
サーバー上に存在しないURLとなると、わけが分かりません。
つまり存在しないディレクトリからアクセスがあったわけです。
いったんサーチコンソールに戻って、謎URLにアクセスしてみると、ちゃんとページが表示されます。
謎ディレクトリを除いたページURLの内容でした。
これは一体? と調べてみると、Googleフォーラムで 似た現象のトピックが立っていました。
どうやらサーバー環境の設定で、「AcceptPathInfo」というものが関わっているようでした。
AcceptPathInfoとはなんぞや?
「AcceptPathInfo」とは、「.htaccess」ファイルで指定できるディレクティブ(指定、命令)の1つです。
ざっくり言うと「本当のファイル名(URL)のあとにパス名情報があるリクエストを受け付けるかどうか」の指定ができるというもの。
本当のファイル名のあとに続くパス名情報(本記事でいう「謎ディレクトリ」部分)は「PATH_INFO」というらしく、「PATH_INFO」を許可するかどうかの状態は、サーバーのApacheバーションによって異なるようです。
Apache1.3系では強制的にオンだそうですが、Apache2.0系ではデフォルトでオフとなっており、「AcceptPathInfo」で許可することができるのだとか。
今回の場合ではApache2.0系のサーバーだったので、「PATH_INFO」を「AcceptPathInfo」で許可されている状態らしい、と言えそうです。
ここはサーバーの仕様の問題ですね。
問題は、この「謎ディレクトリ」現象を解消するにはそうすればいいか? ということです。
ここはサーバーの仕様やサイト構築も絡んでくるので、環境によって対応も変わってくるかも知れません。
存在しないURLからの
アクセスを防御するには?
今回の私の場合は、インデックスに登録されないURLですし、謎URLで表示されるページのcanonicalは正しいページURLなので、影響は少ないかもとは思いましたが、公開URLは統一しておきたい!
正しいページURLを差し置いて、検索上位に出てしまうケースもあるとなれば、尚のことです。
そもそも、なぜ「PATH_INFO」の許可があるかと言えば、PHPなどのプログラムでページを生成する場合に、「PATH_INFO」の許可が必要になるからだそうです。有名なCMS「Word Press」もPHPで動いていますね。
対応については、レンタルサーバーを利用している場合は、まずは一度サーバー会社にサーバーの仕様などを確認することをお勧めします。
私も問い合わせてみましたが、私の利用しているレンタルサーバーの仕様では「AcceptPathInfo」は「default」で、拡張子「.php」のファイルに対して「PATH_INFO」を許可している状態ということでした。
拡張子「.html」のファイルに対しては無効なので、PHPプログラムを使っていない場合は、ファイル拡張子を「.html」にすれば「謎ディレクトリ」現象は解消できるはず、といったものでした。
拡張子を変更するとページURLが変わってしまうので、もしこの方法を選ぶ場合は、「.htaccess」で古いURLから新しいURLへ301リダイレクトさせることを強く推奨します!
AcceptPathInfoの指定
「AcceptPathInfo」は「.htaccess」ファイルに記述することで、「PATH_INFO」を受け付けるかどうかの指定を上書きできるディレクティブらしいので、調べて書いてみるのもいいかも知れません。
「AcceptPathInfo」のデフォルト値は「Default」で、他に「On」「Off」を指定できるようです。
「Default」指定では、ざっくり言うと通常ファイルでは「PATH_INFO」を拒否、スクリプトを扱うファイルでは受け付ける指定のようです。
【構文例】
AcceptPathInfo Default
「On」指定の場合は「PATH_INFO」を大体受け付ける状態。
「Off」指定の場合は本当のURLのみを受け付け、「PATH_INFO」のついたURLでアクセスすると404ページが返される状態のようです。
まだまだ分からない部分はありますが、ここらへんでひとまず一区切りとすることにしました。
ということで、「存在しないURLからアクセスできる」という不思議な現象についての覚え書きでした。
ここまでお読みいただき、ありがとうございました!