WordPressは多くのコーポレートサイト・メディア・ECサイトで採用されているCMSです。サイトのURL一覧を取得したい場面は多いですが、そのままクロールすると管理画面や内部ファイルのURLが大量に混入します。適切なフィルタ設定が必要です。
WordPressクロール時によくある問題
WordPressをフィルタなしでクロールすると、本来必要なページ以外のURLが大量に取得されます。数千件のURLリストに不要なパスが混入し、後処理が大変になります。
- /wp-admin/ — 管理画面(ログインが必要なページ群)
- /wp-includes/ — コアファイル(CSS・JS・PHP)
- /wp-content/ — テーマ・プラグインのファイル
- /wp-json/ — REST APIエンドポイント(大量のJSONが取得される)
- /?p=123 などのパラメータURL — 記事の古いURL形式
- /feed/ — RSSフィード
- /page/2/ などのページネーション
除外すべきディレクトリ一覧
- /wp-admin/
- /wp-includes/
- /wp-content/
- /wp-json/
- /wp/
- /feed/
- /trackback/
- /embed/
Structreeでの除外設定方法
StructreeはデフォルトでWordPress関連の主要ディレクトリ(/wp-admin/・/wp-includes/・/wp-content/・/wp-json/)を自動除外します。追加で除外したいパスは「除外するディレクトリ」欄に1行ずつ入力してください。
特定カテゴリ・ディレクトリのみ取得する
「限定するディレクトリ」機能を使えば、/blog/ や /news/ 以下のページだけをクロールできます。大規模サイトで特定セクションのURL一覧だけ必要な場合や、ブログ記事のみSEO分析したい場合に便利です。
XMLサイトマップからURLを取得する方法
WordPressサイトには /sitemap.xml または /wp-sitemap.xml が存在する場合があります。サイトマップからURLを収集する方法はクロールより高速で、noindexページを除いたURLのみを取得できます。ただしサイトマップに含まれていないページは取得できません。クロールとサイトマップを両方使い、差分を確認するのが確実です。
よくある質問
ログインが必要なページはクロールできますか?
Structreeを含む一般的なクローラーはセッションCookieを保持しないため、ログインが必要な会員専用ページはクロールできません。管理画面(/wp-admin/)も同様です。
ページネーション(/page/2/など)はどう扱えばよいですか?
SEO観点では /page/2/ 以降は通常noindexが推奨されます。URL一覧に含める必要がない場合は「除外するディレクトリ」に /page/ を追加してください。
WordPressのマルチサイトに対応していますか?
サブドメイン型(site1.example.com)はドメイン単位でそれぞれクロールしてください。サブディレクトリ型(example.com/site1/)は「限定するディレクトリ」に /site1/ を指定することで個別取得できます。