このリファレンスでは、公開されているDiscourseサイトがGoogleなどの検索エンジンとどのように連携するか、またプラットフォームがJavaScriptアプリケーションであるにもかかわらずコンテンツが適切にインデックス付けされることを保証する方法について説明しています。
必要なユーザーレベル: すべてのユーザー
Discourseサイトの検索エンジンインデックス作成
DiscourseはJavaScriptアプリケーションとして構築されていますが、検索エンジンが公開サイト上のすべてのコンテンツを適切にクロールおよびインデックス化できるようにするために特別に設計されています。
Discourseが検索エンジンクローラーをサポートする方法
Discourseはインタラクティブな機能のために最新のJavaScriptを使用していますが、検索エンジンがすべてのコンテンツを適切にインデックス化できるようにするためにいくつかの技術を実装しています。
専用クローラーレイアウト
Discourseは、CrawlerDetectionモジュールを使用してユーザーエージェントによって検索エンジンボットを自動的に検出します。クローラーが検出されると、Discourseは通常のJavaScriptアプリケーションの代わりに完全に分離されたサーバーレンダリングHTMLレイアウト (crawler.html.erb) を提供します。このクローラーレイアウトには以下が含まれます。
- 完全なHTMLレンダリングされたトピックコンテンツとトピックリスト — JavaScriptは不要
- 検索エンジンがコンテンツを理解するのに役立つSchema.org構造化データマークアップ(例:
DiscussionForumPosting、ItemList、BreadcrumbList) - 完全なクロールを可能にする
rel="prev"とrel="next"リンクを備えた適切なページネーション - コンテンツの鮮度を示すトピックページ上の
Last-Modifiedヘッダー
JavaScript無効時のフォールバック
JavaScriptが無効になっている通常のブラウザの場合、Discourseは標準のアプリケーションレイアウトに<noscript>タグも含んでいます。これにはレンダリングされたトピックリストとトピックコンテンツが含まれており、JavaScriptがなくてもサイトがアクセス可能であることを保証します。
Robots.txtとインデックス作成の制御
Discourseは、検索エンジンがサイトとどのように対話するかを制御するためのいくつかの設定を提供します。
allow_index_in_robots_txt
このサイト設定(デフォルトで有効)は、サイトのrobots.txtがクロールを許可するかどうかを制御します。無効にすると、robots.txtはすべてのクローラーを拒否し、すべてのレスポンスにX-Robots-Tag: noindexヘッダーが追加されます。
クローラーの許可リストとブロックリスト
次のものを使用して、どのクローラーがサイトへのアクセスを許可されるかを制御できます。
allowed_crawler_user_agents— 設定されている場合、リストされているクローラーのみが許可され、その他はすべてrobots.txtによってブロックされますblocked_crawler_user_agents— 設定されている場合、リストされているクローラーはブロックされ、その他はすべて許可されます
カスタムrobots.txt
管理者は/admin/customize/robotsでrobots.txtファイルを完全にカスタマイズできます。カスタマイズされたrobots.txtは、デフォルトで生成されるものを完全に上書きします。
デフォルトで拒否されるパス
デフォルトでは、Discourseはインデックス作成に役立たないパス(例: /admin/、/auth/、/email/、/session、/searchなど)へのクローラーをブロックします。Googlebotにはより寛容な設定が提供され、コアの管理/認証パスのみをブロックします。
クローラーバージョンの表示
検索エンジンがDiscourseサイトをどのように見ているかを確認するには、次の方法があります。
- ChromeまたはFirefoxにJavaScriptを無効にするブラウザプラグインをインストールする
- Chrome DevToolsを使用してJavaScriptを無効にする(Googleの手順)
- ブラウザのユーザーエージェント文字列を既知のクローラー(例:
Googlebot)に変更して、専用のクローラーレイアウトを表示する