WordPressで自動生成されるrobots.txt

WordPressの場合、ダッシュボードの「プライバシー設定」にあわせて自動でrobots.txtを生成してくれます(自分で robots.txt を設置した場合はそちらが優先されます)。

細かな設定を行いたい場合は自分で robots.txt を作成した方が早いかも知れませんが、当該部分にフィルターが用意されているので、プラグインやテーマでカスタマイズすることも可能です。

スポンサー

自動生成の robots.txt

2013.8.22追記:
実施にブラウザで自動生成される robots.txt にアクセスしても中身を確認することはできません。
これは /wp-includes/template-loader.php で is_robots がtrueの時、すなわち検索エンジンのクローラーのアクセスの場合のみ生成されるからです。

ダッシュボードの設定によって生成される robots.txt の中身が異なります。

「検索エンジンによるサイトのインデックスを許可する」にしていた場合

「検索エンジンによるサイトのインデックスを許可しない」にしていた場合

※この他にプラグインなどで追加される場合もあります。

robots.txt を生成している関数は /wp-includes/functions.php になります。

「検索エンジンによるサイトのインデックスを許可する」を選択していた場合でも、/wp-admin/ や /wp-includes/ はクロールしないようにしています。

ところが、このようになったのは WordPress3.3 以降でそれ以前のバージョンでは 「Disallow: 」が出力され、すべてのディレクトリがクロールされてしまいます。

3.2以前の場合の対処法

どうにもならない事情(PHPのバージョンを上げられない)で下位バージョンをインストールしなければならない時は、robots_txt フィルターを使って書き換えることができます。
テーマのfunctions.phpに以下のコードを加えてください。

特定のディレクトリをクロールさせたくない場合

(バージョン関係なく)ユーザーがログインしないと閲覧できないコンテンツが含まれている場合など、一部のディレクトリをクロールさせたくない場合なども、フィルターを使って Disallow: の行を増やせば可能です。
ほとんど先ほどのコードと同じですが、「members」というディレクトリをクロールさせたくなければ

とします。

今回は勉強もかねてWordPressのフィルターを利用しましたが、自分で robots.txt を設置した場合はそちらが優先されます。
ただし、プラグインなどでこのフィルターを利用するものもあるので、手法を覚えておくだけでも良いでしょう。

WordPressで自動生成されるrobots.txt」への1件のフィードバック

コメントは受け付けていません。