robots.txtがステータスコード500を返すとインデックスに登録されない

弊社で運用しているWebサイトにおいて、サイトのページがGoogleのインデックスからどんどん外されるという現象が発生しました。

Google Search Consoleでカバレッジを確認すると、次のようにどんどん下がっているのが確認できます。

外されたページの一つに対して、「インデックス登録をリクエスト」を行うと、次のように「URLがGoogleに認識されていません」というエラーが返ってきました。

また、Googleのモバイルフレンドリーテストを試すと、次のようなエラーが返ってきました。

ページにアクセスできません

ページが利用できない、ページが robots.txt によってブロックされているといった理由が考えられます

当該ページは、ブラウザでアクセスをすると問題なく表示できますし、robots.txtは設置していないので不思議でしたが、とりあえずrobots.txtを設置してみるとエラーが解消されました。

色々調べてみると、当サイトでは動的なURLを処理する仕組みが原因で、存在しないファイルにアクセスしようとした際にHTTPステータスコード404ではなく、500を返す状態になっていました。よってGoogleのシステムがrobots.txtを見に行ったときも500が返されていました。

Googleのインデックスへの登録にrobots.txtは必須ではありませんが、その場合はしっかりと404を返す必要があるようです。その他のステータスコードは試していませんが、少なくとも500を返すと、Googleはサイト全体がサーバー内部エラーと判断するのか(または、サイトクロールの可否を判断できないからか)、サイト内の他のページにもアクセスできなくなるように思われます。

memcachedをWindowsにインストールする

Windowsにmemcachedをインストールした際のメモです。

memcachedのインストール

まず、Windows用のバイナリを次からダウンロードします。バージョン1.4.5以降はWindowsのサービスへの登録に手間が掛るので、今回は1.4.4をダウンロードします。
http://downloads.northscale.com/memcached-win32-1.4.4-14.zip

ダウンロードしたZIPファイルを展開し、適当な場所に配置します。

C:\memcached

管理者権限でコマンドプロンプトを立ち上げ、上記のフォルダに移動します。

> cd C:\memcached

次のコマンドでmemcachedをWindowsのサービスとして登録します。

> memcached.exe -d install

登録が完了したら、サービスを起動します。

> memcached.exe -d start

以上でMemcachedのインストールは完了です。

サービスの停止およびアンインストールの際は、次のコマンドを使用します。

> memcached.exe -d stop
> memcached.exe -d uninstall

memcachedへの接続

memcachedに接続して状態を確認するには、Telnetを利用するのが便利です。

Telnetを起動するには、コマンドプロンプトでtelnetコマンドを実行します。memcachedのポートは標準で11211になります。

> telnet localhost 11211

telnetコマンドが見当たらない方は、「Windowsの機能の有効化または無効化」から「Telnetクライアント」をインストールすることで使用できるようになります。

接続後、memcachedの各コマンドを利用できるようになります。

64 bit版のバグ?

上記NorthScaleのサイトからは64 bit版のバイナリもダウンロードすることができます。
http://downloads.northscale.com/memcached-win64-1.4.4-14.zip

ただ、環境に固有の問題かもしれませんが、内部のタイムスタンプにバグがあるように思われます。

そのため、memcachedに値を登録する際にうまく有効期限を設定できないトラブルに見舞われました。memcachedでは、30日以内に関しては期限切れまでの秒数、それ以降に関してはUNIXタイムスタンプで期限の日時を指定する仕様になっているのですが、UNIXタイムスタンプで指定した場合に即座に期限切れになってしまう問題が発生しました。

最初は原因が分からず大変苦労しましたが、Telnetで接続後、statsコマンドを使用したところ、memcachedサーバーの時刻と起動からの経過時間の値がおかしなことになっていることに気付きました。

Top