• HOME
  • WORKS
  • SERVICE
  • ABOUT
  • BLOG
  • NEWS
  • RECRUIT
  • CONTACT

エンタメ特化型、心を動かすWeb制作。
まずは無料で相談いたします!

公開日:2025/04/13

【SEO対策】ProcessWireで自動サイトマップ(インデックス)の生成と送信方法

サイト運営者の方々にとって、検索エンジンのインデックスに自分のサイトをしっかりと登録してもらうことは非常に重要です。

特に新しいページが追加されたり、コンテンツが更新された場合、迅速にインデックスされるようにすることが求められます。

そこで今回は、ProcessWireを使用して、サイトマップ(sitemap.xml) を自動生成し、検索エンジンにインデックスさせる方法についてご紹介します。

フルスタックサイト構築

サイトマップとは?

サイトマップとは、ウェブサイトのすべてのページを一覧化したファイルです。

このファイルを検索エンジンに送信することで、サイトのすべてのページを確実にクロールさせ、インデックスを促進することができます。

特に大規模なサイトや、新しく追加されたページを早期にインデックスしてもらいたい場合に役立ちます。

サイトマップをProcessWireで作成する方法

手順 1: sitemap.xml の作成

まず、以下のコードを使って/public_html直下に下記を作成します。

  • sitemap.xml
  • sitemap.xml.php

このコードは、サイトの静的ページ(トップページやサービスページなど)およびブログ記事を対象にしています。

今回はブログ記事公開後に自動追加される様にします。

 

sitemap.xml.php:

<?php
include('../../index.php');

// ヘッダーを設定(ここではXML宣言は1回のみで十分)
header('Content-Type: application/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <?php
  // 静的ページ(ページネーション含む)
  $staticUrls = [
    'https://6sou.site/',
  ];

  foreach ($staticUrls as $url): ?>
    <url>
      <loc><?= htmlspecialchars($url, ENT_QUOTES, 'UTF-8') ?></loc>
      <changefreq>monthly</changefreq>
      <priority>0.7</priority>
    </url>
  <?php endforeach; ?>

  <?php
  // ブログ記事
//$items = $pages->find("template=〇〇〇〇, status<1024"); //非公開記事も公開記事も書き出す
$items = $pages->find("template=〇〇〇〇, status=published"); //非公開記事は書き出さない
  if ($items->count) {
    foreach ($items as $post):
      // URLパラメータからブログIDを取得
      $blogId = $post->name;  // post->name を使ってIDを取得
      // 親ページ(blog)の取得
      $blogParent = $pages->get('blog');
      if ($blogParent->id) {
        // 親ページが見つかった場合、ブログ詳細ページを取得
        $blogPage = $pages->get("template=〇〇〇〇, parent=$blogParent->id, name=$blogId");
        if ($blogPage->id): ?>
          <url>
            <loc><?= htmlspecialchars("https://6sou.site/blog-detail.php?id=" . $blogPage->name, ENT_QUOTES, 'UTF-8') ?></loc>
            <lastmod><?= date('c', $blogPage->modified) ?></lastmod>
            <changefreq>weekly</changefreq>
            <priority>0.8</priority>
          </url>
        <?php endif;
      } else {
        echo "ブログ親ページが見つかりません。";
      }
    endforeach;
  } else {
    echo '<!-- No blog posts found -->';
  }
  ?>
</urlset>

 

コードの説明

  • 静的ページの追加: staticUrls 配列には、サイト内で変更が少ない静的ページ(トップページ、サービスページ、採用ページなど)を追加しています。

  • ブログ記事: テンプレートを使って、公開中のブログ記事を動的に取得し、それぞれの詳細ページをサイトマップに追加しています。これにより、新しいブログ記事が追加されるたびにサイトマップも自動更新されます。

 

手順 2: サイトマップの配置

上記のコードを sitemap.xml.php というファイルに保存し、ウェブサーバーの公開ディレクトリ(例:/site/sitemap.xml.php)に配置します。

サイトマップは https://〇〇/sitemap.xml.php のURLでアクセスできます。

 

手順 3: .htaccess にリダイレクト設定を追加

.htaccess ファイルを開き、以下のようにリダイレクト(内部転送)ルールを追加します。

# sitemap.xml にアクセスされたら sitemap.xml.php に内部転送
RewriteEngine On
RewriteRule ^sitemap\.xml$ sitemap.xml.php [L]

この記述により、ブラウザやGooglebotが https://6sou.site/sitemap.xml にアクセスしても、実際には sitemap.xml.php を読み込んで処理を実行します。

しかも「内部転送(Rewrite)」なのでURLは .xml のままで表示され、自然です。

動作確認方法

  • ブラウザで https://〇〇〇〇/sitemap.xml にアクセスします。

  • 正しく sitemap.xml.php が動作すれば、XML形式のサイトマップが表示されます。

  • 表示されない場合は .htaccess の設定ミスや、Rewriteがサーバーで有効になっていない可能性があります。

グーグルサーチコンソールへ送信

リダイレクト後のURLはそのまま https://〇〇〇〇/sitemap.xml を Google Search Console に送信すればOKです。

補足(ファイル構成イメージ)

/public_html/
├─ index.php
├─ sitemap.xml
├─ sitemap.xml.php  ← ここにサイトマップ生成処理を書く
├─ .htaccess         ← RewriteRuleを追加
  • sitemap.xml.php で自動生成したサイトマップを作成

  • .htaccess の設定だけで sitemap.xml に見せかけることができる

  • Googleにも自然に送信できる!

動的サイトでも、SEOを意識したサイト構造にするなら、このような仕組みを取り入れておきましょう。

関連記事

  • ProcessWireをおすすめする理由
  • ProcessWireでフォーム送信処理に必要な読み込みファイル
  • ProcessWireを使ったブログ詳細ページの構築
  • ProcessWireにおけるsortパラメータ活用術とカスタムフィールドによる柔軟な並び順制御
  • 見た目はプロ、中身はボロボロ?WordPressが抱える“更新の落とし穴”
  • CMSに強い制作会社はここまでやる。ProcessWire管理画面セキュリティ強化術
  • ProcessWireでテスト環境と本番環境を一つの管理画面で!
  • ProcessWireで実現する!シンプルで自由な会員制サイト構築ガイド

Back to list

© 2019- MUSOU.