エラーログ調査(1), AH00124

エラーログにAH00124が出力された場合の原因と対策を書きます。

エラーログにAH00124が出力された

ある日、さくらレンタルサーバーのサーバーコントロールからアクセスログを見てみた。
その結果、AH00124というエラーログが出力されていることに気づいた。
これはリダイレクトエラーが発生しているということ。

具体的には、下記、アクセスしようとしているページから検索エンジンのクローラーによるものと判断出来る。

referer: http://***.com/robots.txt

[Thu Apr 24 01:47:26.733927 2025] [core:error] [pid 83507] [client 192.71.3.222:0] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://***.com/robots.txt

これを放置するのはSEOの観点でよくないので、修正することにした。

Not foundの確認

まずは現状確認をしてみた。
エラーとなるページをブラウザでアクセスしたところ、Not Foundとなった。
ページは存在しないので当然。

robots.txtファイルの作成

クローラーに対する指示としてrobots.txtというファイルを用意した。(詳しくはrobots.txt の概要を参照)

中身はたった2行しかないが、これを用意することでクローラーに対する指示が明確になる。
この場合、制限無しでアクセスしてください、という意味。

User-agent: *
Disallow:

.htaccessファイルの見直し

このサイトでは、フォルダ構成の理由からリダイレクトを利用している。

その設定があまり良くないことに気づいた。

トップページのフォルダに置かれている .htaccess を見直し、下記、2行を追加した。

修正後RewriteBase /***/
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_URI} !^/***/index.php$
RewriteCond %{REQUEST_URI} !^/robots.txt$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /***/index.php [L]
修正前RewriteBase /***/
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /***/index.php [L]

これで、ページが見つからなかった場合にindex.phpへの リダイレクトが繰り返されないようになる。

また、robots.txtもリダイレクトの対象から外れる。ちなみに、.htaccessファイルの気密性は高いのでパーミッションは 600 にしておく。

改善結果、エラーログにAH00124が出力されなくなった

対策した結果、robots.txtにもう一度アクセスしたところ、エラーは出なくなった。
代わりに下記の文字が表示されるようになった。これは期待通りの動作。

また、試しに存在しないページにアクセスしてみても、エラーログにAH00124が出力されなくなったことを確認した。
改善出来たと考える。