サブディレクトリにインストールしたWordPressサイトで標準のxmlサイトマップがリダイレクトされないときの対処

公開日:2025(令和7)年7月15日/最終更新日:

WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

WordPressは標準で検索エンジン向けのサイトマップを生成する機能があります。

従って、特別な機能が必要なければ、サードパーティのサイトマップ生成プラグインを使用する必要はありません。

ただし注意点があります。

それはWordPress標準のサイトマップのURLが「/sitemap.xml」ではなく「/wp-sitemap.xml」であることです。

しかしながら、WordPressは実によく作られていて、「/sitemap.xml」へアクセスすると、自動で「/wp-sitemap.xml」へリダイレクトするようになっており、Google Search Consoleなどへサイトマップの登録を「/sitemap.xml」で行っても問題なく認識されるようになっています。

ただこれはルート(ドメイン用のディレクトリ直下)にあるWordPressの場合で、私が利用しているカラフルボックス ColorfulBoxサーバーでは、階層化してサブディレクトリへ別にインストールしたWordPressサイトではリダイレクトされず、404エラーが出てしまうという現象が発生しました。

まあ標準のサイトマップのURLが「/wp-sitemap.xml」であることが分かっていて、かつ、Google Search Consoleのように自身でサイトマップのURLを登録できるのであれば「/wp-sitemap.xml」で登録すれば問題ないのですが、そうした機能を持たないクローラー(検索エンジンがページを登録するために循環する)がこのURLを見つけられない場合があったり、「sitemap.xml」が404になってしまうので「このサイトにはサイトマップがないんだな」と誤認識される可能性があるため、きちんとリダイレクトされるようにしておいた方がいいと思い、以下のようなコードを作成して対処しました。

同様の現象が起きている方で、対処しておきたいと考える方の参考になれば幸いです。

以下のコードはカラフルボックス ColorfulBoxサーバーにおいて正常にリダイレクトできたコード例であり、他のサーバーでは機能しなかったり、不具合が出たりする可能性がありますので、コード追加後にはよくテストを行うようにしてください

以下のコードをサブディレクトリにインストールしているWordPressで有効化しているテーマのfunctions.phpへ追加します。

/*** xmlサイトマップ(sitemap.xml→wp-sitemap.xml)へのリダイレクト ***/
/* サブディレクトリにインストールしたWordPressのリダイレクトがかからない場合に追加 */
function pwcn_custom_sitemap_redirect() {
    // リクエストされたURLのパスを取得
    $request_uri = $_SERVER['REQUEST_URI'];

    // ルートのsitemap.xmlへのリクエストかチェック
    if ( strpos( $request_uri, '/sitemap.xml' ) !== false && strpos( $request_uri, '/wp-sitemap.xml' ) === false ) {
 
        // リダイレクト先のURLを生成
        $redirect_url = site_url( '/wp-sitemap.xml' );

        // リダイレクトを実行
        wp_redirect( $redirect_url, 301 ); // 301は恒久的なリダイレクト
        exit; // リダイレクト後、スクリプトの実行を停止
    }
}
add_action( 'template_redirect', 'pwcn_custom_sitemap_redirect' );

コードを追加したら、サブディレクトリにインストールしているサイトを開き、末尾に「/sitemap.xml」を追加してアクセスしてみてください。

リダイレクトが正しく行われていれば自動で「/wp-sitemap.xml」へ転送され、サイトマップがきちんと表示され、不具合がある場合には404エラーが出るはずです。

リダイレクトされることが確認できたら、ルート(メインディレクトリ)にあるサイトで問題がないかの確認もしてくださいね。

, , , ,
Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)
画面上部に「PHP Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in…」という表示が出る原因と対処