.htaccessで特定のディレクトリにアクセスしたときに別URLへリダイレクトさせる方法【実例つき】

Webサイト運用中、「このディレクトリにアクセスされたら、
別サイトにリダイレクトしたい」という場面は意外と多くあります。
この記事では .htaccess を使って、特定のディレクトリへのアクセスを別のURL(今回は https://teach.web-represent.link/)へ転送する方法をわかりやすく解説します。

こんなときに使える!

  • 特定のキャンペーン終了後、関連ページを本サイトのトップに誘導したい
  • 古いコンテンツへのアクセスを新しいドメインへ誘導したい
  • 一時的にディレクトリごとアクセスを閉じたいときに別ページへ案内したい

実装方法(.htaccessを使ったリダイレクト)

まずは基本の書き方を紹介します。
たとえば /staff/ ディレクトリにアクセスした場合に、
https://teach.web-represent.link/ にリダイレクトする場合は以下のように記述します。

【例①】mod_rewriteを使う方法(推奨)

RewriteEngine On

# /staff/ 以下へのアクセスを https://teach.web-represent.link/ へリダイレクト
RewriteCond %{REQUEST_URI} ^/staff/
RewriteRule ^.*$ https://teach.web-represent.link/ [R=301,L]

【例②】簡易的なRedirect(mod_alias)

Redirect 301 /staff/ https://teach.web-represent.link/

記述する場所

.htaccess ファイルは通常、Webサイトのルートディレクトリ
(WordPressなら public_htmlhtdocs など)にあります。
既存の記述がある場合は、以下のように # BEGIN WordPress より上に追記するのが推奨です。

# 独自のリダイレクト設定
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/staff/
RewriteRule ^.*$ https://teach.web-represent.link/ [R=301,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
...
</IfModule>
# END WordPress

リダイレクトの動作確認方法

  1. .htaccess をアップロードまたは更新
  2. ブラウザで https://あなたのドメイン/staff/ にアクセス
  3. https://teach.web-represent.link/ に転送されれば成功!

キャッシュの影響で即時反映されないことがあるため、
ブラウザのシークレットモードやキャッシュクリアをお試しください。

補足:ディレクトリごとリダイレクトする場合

ディレクトリ直下だけでなく、その配下もすべてリダイレクトしたい場合は、以下のように記述します:

RewriteCond %{REQUEST_URI} ^/staff/
RewriteRule ^staff/.*$ https://teach.web-represent.link/ [R=301,L]

まとめ

設定内容記述例
特定ディレクトリの転送/staff/https://teach.web-represent.link/
推奨方法mod_rewrite で柔軟な条件付き設定
確認方法該当ディレクトリにアクセスしてリダイレクト動作を確認

おまけ:複数ディレクトリをまとめてリダイレクトしたい場合

RewriteCond %{REQUEST_URI} ^/(staff|campaign|old-page)/
RewriteRule ^.*$ https://teach.web-represent.link/ [R=301,L]

参考URL