Amazonで商品を見る セール会場へ

WordPress│.htaccessを使ったリダイレクト方法

このページはApacheのmod_rewriteと.htaccessが有効な環境の例です。Nginxにはそのまま適用できません。変更前のファイルを保存し、まず検証環境で302転送を試してから恒久移転に301を使います。サーバー設定そのものを本記事で変更することはありません。

WordPressサイトの移転や構成変更に伴い、「特定のURLだけを別ドメイン・別パスへリダイレクトしたい」というケースはよくあります。

本記事では、.htaccess を使ったリダイレクトの基本と実践的な書き方を、WordPress特有の注意点も含めて解説します。

この記事でわかること

  • .htaccess を使ったリダイレクトの基本
  • WordPress環境でリダイレクトを書くときの注意点
  • サブディレクトリ単位でのリダイレクト方法
  • 親(ルート).htaccess にまとめて書く方法
  • SEOを考慮した 301 リダイレクトの使いどころ
目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

前提:WordPressと.htaccessの関係

WordPressでは、パーマリンクやURLルーティングのために
.htaccess に mod_rewrite を使ったルールが自動生成されます。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

この BEGIN WordPress ~ END WordPress の中は
管理画面から自動的に上書きされるため、直接編集してはいけません。

リダイレクトの基本(301 / 302)

種類用途
301恒久的なURL変更(恒久移転を通知)
302一時的な転送(テスト・期間限定)

本記事では 恒久移転を前提に 301 リダイレクトを使用します。

方法①:サブディレクトリの .htaccess に書く

サブディレクトリから別ドメイン、別ドメインのサブディレクトサイトへの移転時によく使います。

想定ケース

https://example.com/figma/
↓
https://new-site.com/figma/

書き方(/figma/ ディレクトリ内 .htaccess)

<IfModule mod_rewrite.c>
RewriteEngine On

# 管理画面・ログインは除外
RewriteCond %{REQUEST_URI} !^/figma/wp-admin(?:/|$) [NC]
RewriteCond %{REQUEST_URI} !^/figma/wp-login\.php(?:/|$) [NC]

# /figma/ 以下を別ドメインへ転送
RewriteRule ^(.*)$ https://new-site.com/figma/$1 [R=301,L]
</IfModule>

ポイント

  • サブディレクトリ内の .htaccess ではRewriteRule は そのディレクトリ基準で評価される
  • WordPressのルーティングより 必ず上に書く
  • $1 を使うことで 末尾パスを維持できる

方法②:親(ルート)の .htaccess にまとめて書く

複数の転送をルートへまとめる方法もありますが、子ディレクトリの設定やサーバー構成を含めて検証が必要です。

ルートが常に最適とは限りません。実際に適用される設定の位置と処理順を確認してください。

書き方(ドキュメントルート)

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^figma/(.*)$ https://new-site.com/figma/$1 [R=301,L]
RewriteRule ^photoshop/(.*)$ https://new-site.com/photoshop/$1 [R=301,L]
RewriteRule ^Illustrator/(.*)$ https://new-site.com/illustrator/$1 [R=301,L]
RewriteRule ^google-workspace/(.*)$ https://new-site.com/google/$1 [R=301,L]
</IfModule>

この方法のメリット

  • WordPressの自動上書きの影響を受けない
  • 1ファイルで全リダイレクトを管理できる
  • 転送が先に成立したリクエストではWordPressへ到達しない
  • 旧URLと新URLの対応を一覧で管理できる

なぜ WordPress より「上」に書く必要があるのか

掲載のWordPressルールは、実在するファイル・ディレクトリを除き、対象の要求をindex.phpへ内部的に書き換えます。

RewriteRule . /index.php [L]

先に内部書き換えが成立すると、後ろに置いた転送ルールが想定どおり適用されない場合があります。

同じ.htaccessの自動生成ブロックの外側・上へ転送ルールを置いて検証します。

リダイレクトは必ず WordPress ルールより先に書く、これは WordPress + .htaccess の鉄則です。

よくある注意点

覚えておきましょう!

① 301はキャッシュされる

ブラウザに強くキャッシュされるため、検証時はシークレットモード推奨。

② 大文字・小文字に注意

たとえば/Illustrator/ と /illustrator/ は別物として扱われる場合があります。

③ BEGIN WordPress 内は触らない

編集すると管理画面操作で上書きされます。

記述を作る・確かめる

転送するURLが多いときは、.htaccessリダイレクト生成で記述を作れます。

旧URLと新URLの対応表を貼ると、Redirect 301・RewriteRule・RedirectMatch のいずれかの形で出力します。

www統一・常時SSL化・末尾スラッシュ統一の定番の記述も、選ぶだけで追加できます。

入力したURLはサーバーに送られず、ブラウザーの中だけで変換されます。

書いたあとはリダイレクトチェックで、301になっているかと転送の段数を確かめてください。

まとめ

  • .htaccess でのリダイレクトは WordPressより先に書く
  • 単体ならサブディレクトリ .htaccess
  • 親へまとめる場合も、子ディレクトリの.htaccessと処理順を確認する
  • 恒久移転は 301リダイレクトを使う

WordPress環境では「どこに書くか」「順番」が非常に重要です。

仕組みを理解しておけば、安全かつSEOに配慮したURL移転が行えます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/WAZA-codeにもまとめています。

転送範囲と検証項目

サブディレクトリ例は管理画面・ログインを除外しますが、ルートの複数ルール例はそれらも含めて転送します。同じ動作ではありません。管理画面を残すなら除外条件を各RewriteRuleの直前へ追加してください。末尾スラッシュのない入口URL、存在するファイル、子ディレクトリに別の.htaccessがある場合も個別に確認します。

例の転送先にはクエリ文字列を指定していないため、元のクエリが引き継がれます。

秘密情報を含むパラメーターを別ドメインへ渡さないでください。

元URL、Location、最終ステータスとループの有無を確認し、日本語・空白などを含むパスも対象サーバーで試します。

不具合時は追加したルールを元のバックアップへ戻し、ブラウザー・CDNの転送キャッシュも確認します。301は検索エンジンへの移転シグナルであり、順位の維持を保証するものではありません。参照:Apacheのディレクトリ単位の書き換え、RewriteRuleフラグ。旧GitHubの記述は今回の修正とは未同期です。

管理画面の除外と子ディレクトリを実測する

除外条件の末尾の(?:/|$)は、管理画面・ログインURLの区切りを指定します。

以前の前方一致だけの条件では、wp-admin-otherやwp-login.php-backupまで除外されました。

2026年10月3日の隔離Apache 2.4.69でこれを再現し、修正版では正規の管理画面・ログインURLを残し、似た名前のURLを301転送できることを確認しました。

親の転送ルールと、子に置いたWordPress形式の内部書き換えを同時に使った試験では、子のindex.phpへ到達して200となる例がありました。

子の自動生成ブロックより上へ転送を置くと301になりました。

親に書けば常に転送できるとは判断せず、実際の子設定を含めて検証します。

空白・#・日本語を含むパスは、今回の試験ではURLエンコードしたLocationで転送されました。

%3Fを含むパスはWindows版Apacheのファイル名制約で403になりました。

この結果をLinuxなど別のサーバーへ一般化せず、同じ入力を対象環境で確認してください。

/figmaのような末尾スラッシュなしの要求では、まず同じサイトの/figma/へ301となり、転送が1段増えることも確認しました。

検証対象は掲載ルールと試験用のファイル・内部書き換えです。

実際のWordPressのログイン、移転先の内容、CDNを含む本番移行は検証していません。

  • URLをコピーしました!

移転作業を任せたい方へ

サーバー移転・ドメイン移管の代行

WordPressサイトの移転¥25,000〜、サーバー移転¥40,000〜、ドメイン移管¥15,000〜(税込)。ダウンタイムなしの切り替えとDNS設定に対応し、作業後1ヶ月は無料でサポートします。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

Webサイトのサイト・サーバー移転・ドメイン移管のサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次