ホーム » WordPress » WordPressサイトでmod_rewriteが意図せず301リダイレクトされる

WordPressサイトでmod_rewriteが意図せず301リダイレクトされる

2025/09/22 | WEB, WordPress

ITサポート・
WEBサイト制作は
お任せください

  • パソコンの動作が遅い
  • IT・DXツールを導入したい
  • WEBサイトを作りたい
  • WEBサイトの表示がおかしくなった

WordPressサイトでmod_rewriteを設定した際、意図せず301リダイレクトが発生してしまうときの原因と対処法をご紹介します。

発生した事象とやりたかったこと

まず、どのような状況で問題が発生し、何を達成したかったのかをご紹介します。

実行環境と前提

  • サーバー: エックスサーバー
  • 構成: ルートディレクトリとサブディレクトリ、それぞれにWordPressをインストール

ディレクトリ構成は以下の通りです。

.public_html
├── WordPressのファイル
└── sub-dir
    └── WordPressのファイル

やりたかったこと

ルートディレクトリのWordPressサイトにおいて、特定のURL(https://example.com/page)にアクセスがあった際、URLは変更せずにサブディレクトリのWordPressサイトの特定のページ(https://example.com/sub-dir/page)の内容を表示させること。

設定した.htaccess

ルートディレクトリの.htaccessに、以下のmod_rewriteルールを記述しました。

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^page$ /sub-dir/page [L]
</IfModule>

発生した問題

https://example.com/pageにアクセスしたところ、mod_rewriteではなくWordPressによって、https://example.com/sub-dir/pageへ301リダイレクトされてしまいました。

以下のcurlコマンドの結果でも、WordPressがリダイレクトを指示していることが確認できます。

% curl -I https://example.com/page
HTTP/2 301
...
location: https://example.com/sub-dir/page
...
x-redirect-by: WordPress

301リダイレクトの原因と対処法

この301リダイレクトが発生した原因と、解決策について解説します。

原因:プラグイン「Custom Permalinks」

今回のケースでは、サブディレクトリのWordPressで利用していたプラグイン「Custom Permalinks」が原因でした。

このプラグインは、任意のページに独自のパーマリンクを設定できる便利なツールです。しかし、このプラグインが設定したパーマリンク(https://example.com/sub-dir/page)が、ルートディレクトリの.htaccessに記述したmod_rewriteルールよりも優先して動作していたため、意図しないリダイレクトが引き起こされていたようです。

x-redirect-by: WordPressというヘッダー情報からも、WordPress自体がリダイレクト処理を行っていることが分かります。mod_rewriteの[L]フラグ(Last ruleの意)は、該当のルールがマッチしたらそれ以降のルールを適用しないという意味ですが、WordPressのリダイレクト処理は、mod_rewriteの処理よりも後に行われるため、このルールは無視されてしまいました。

対処法

Custom Permalinksによるパーマリンク設定を削除し、WordPressの標準機能で設定し直すことで解決しました。

  1. Custom Permalinksの設定を削除:
    サブディレクトリのWordPressにログインし、「Custom Permalinks」で設定していたパーマリンク設定を削除します。
  2. WordPressの標準機能で再設定:
    パーマリンク設定を削除した後、WordPressの標準機能で改めてパーマリンクを設定し直します。
  3. .htaccessの確認:
    最後に、ルートディレクトリの.htaccessに、前述のmod_rewriteルールが正しく記述されているかを確認します。

修正後の結果

これらの手順を実行した結果、https://example.com/pageにアクセスした際に301リダイレクトは発生せず、URLを変更することなく、サブディレクトリのページが表示されるようになりました。

curlコマンドで確認すると、HTTP/2 200が返されていることが分かります。

% curl -I https://example.com/page
HTTP/2 200
...

まとめ

WordPressサイトでmod_rewriteを設定したのに意図した通りに動かず、x-redirect-by: WordPressによる301リダイレクトが発生する場合は、パーマリンク設定を行うプラグインが原因となっている可能性があります。

mod_rewriteの処理よりもWordPress自体のパーマリンク設定が優先されることがあるため、プラグインやWordPressの標準設定をもう一度確認してみることをおすすめします。

弊社ではウェブサイトの制作や保守を行っています。ぜひお気軽にご相談ください。

ITサポート・WEBサイト制作はお任せください