速報

岐阜産保センターで3058人の情報漏えい 正規メールで外部への不正申請も

CATEGORY

htaccessで特定のページを301リダイレクトする方法

※本ページのリンクにはプロモーションが含まれています。

htaccess-redirect-page

目次

Web制作の中でサイトの引っ越しやURLの変更等によりhtaccessを編集する機会は多くあると思います。しかも最近はサイト全体の常時SSL化が必須になってきてますので、フロントよりのエンジニアの方もhtaccessを触ることが多いのではないでしょうか。htaccessはサーバのディレクトリ単位で制御するファイルとなりますが、ページ単位でのも可能となっています。

今回はやページのURLの変更した際に役立つページ単位のリダイレクト方法をご紹介したいと思います!

スポンサーリンク

ディレクトリ構成

本記事では以下のディレクトリ構成を使用して解説しています。旧ドメインのサイト内にあるファイルにアクセスがあった際に新ドメインのサイトのファイルにリダイレクトすることを想定していますが、同一ディレクトリ内でのリダイレクトも可能です。

#ディレクトリ構成
www               #ドメイン
  ┗ old-example ← (old-example.com)
    ┃
    ┣ .htaccess
    ┃
    ┣ html
    ┃  ┗ html-01.html
    ┣ jquery
    ┃  ┗ jquery-01.html
    ┣ php
    ┃  ┗ php-01.html
    ┗wordpress
       ┗ wordpress-01.html

www               #ドメイン
  ┗ new-example ← (new-example.com)
    ┃
    ┣ html
    ┃  ┗ html-01.html
    ┣ jquery
    ┃  ┗ jquery-01.html
    ┣ php
    ┃  ┗ php-01.html
    ┗wordpress
       ┗ wordpress-01.html

用語

RewriteEngine

Onと記述することでリダイレクトが有効になります。リダイレクトを設定するにはApacheモジュールのmod_rewriteが有効になっている必要があります。(ほとんどのレンタルサーバでは有効になっています。をご利用の場合はmod_rewriteのモジュールをインストールしましょう。)

RewriteBase

リダイレクトのベースとなるディレクトリを設定します。本記事のディレクトリ構成ではドメインを当てているディレクトリの直下にhtaccessを設置しているため「/」となります。

RewriteBase

URLの書き換えルールを記述します。

スポンサーリンク

ページ単位でリダイレクトを設定する

ページ単位のリダイレクト設定例です。旧サイトにアクセスが有った場合に新サイトにリダイレクトされるようになります。

# ここにアクセスがあったら
https://old-example.com/html/html-01.html
↓
# ここにリダイレクトしたい
https://new-example.com/html/html-01.html

htaccess

# old-exampleの.htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^html/html-01.html https://new-example.com/html/html-01.html [R=301,L]
</IfModule>

複数ページでリダイレクトを設定する

リダイレクトを設定したいページが複数ある場合はRewriteRuleを下に追加していきます。

# 1. ここにアクセスがあったら
https://old-example.com/html/html-01.html
↓
# ここにリダイレクトしたい
https://new-example.com/html/html-01.html

# 2. ここにアクセスがあったら
https://old-example.com/jquery/jquery-01.html
↓
# ここにリダイレクトしたい
https://new-example.com/jquery/jquery-01.html

htaccess

# old-exampleの.htaccessに追記
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^html/html-01.html https://new-example.com/html/html-01.html [R=301,L]
  RewriteRule ^jquery/jquery-01.html https://new-example.com/jquery/jquery-01.html [R=301,L]
</IfModule>

スポンサーリンク

WordPressのhtaccessにリダイレクト設定を追加する

WordPressのhtaccessに独自のルールを追加する場合は、下記に追加していきます。

htaccess

# 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

# ここに追加する
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^html/ https://new-example.com/html/ [R=301,L]
</IfModule>

以上、htaccessを使ってページ単位で301リダイレクトを設定する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク

VPS

1台の物理サーバーを仮想的に分け、専用のサーバーのように使えるサービス。自由度が高い分、管理も自分で行う。

詳しく見る

ドメイン

インターネット上の住所にあたる名前。「example.com」のように、WebサイトやメールアドレスのURLに使う。

詳しく見る

リダイレクト

あるURLにアクセスしたとき、自動的に別のURLへ転送すること。サイトの移転やURLの変更で使う。

詳しく見る