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

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

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

この記事でわかること

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

著者

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

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

前提:WordPressと.htaccessの関係

WordPressでは、パーマリンクやURLルーティングのために
.htaccessmod_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 WordPressEND WordPress の中は
管理画面から自動的に上書きされるため、直接編集してはいけません。

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

種類用途
301恒久的なURL変更(SEO評価を引き継ぐ)
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 にまとめて書く【おすすめ】

複数のサブディレクトリをまとめて移転する場合は、ルートの .htaccess に集約する方法が最も安全・管理しやすいです。

要するにサブディレクトリ移転であれ、親サイトの.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を完全にスキップできる
  • 技術的にもSEO的にも意図が明確

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

WordPressは、存在しないURLをすべて index.php にルーティングします。

RewriteRule . /index.php [L]

このルールが先に動くと、リダイレクト処理まで到達しません。

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

よくある注意点

覚えておきましょう!

① 301はキャッシュされる

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

② 大文字・小文字に注意

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

③ BEGIN WordPress 内は触らない

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

まとめ

  • .htaccess でのリダイレクトは WordPressより先に書く
  • 単体ならサブディレクトリ .htaccess
  • 複数あるなら .htaccess にまとめる
  • 恒久移転は 301リダイレクトを使う

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

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

  • URLをコピーしました!

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

サービス

Service

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

目次