.htaccess を使ったリダイレクトの設定方法

Author:

ウェブサイトの運営をしていると、ページの URL を変更しなければならない場面が出てきます。しかし、単純に URL を変更するだけでは、旧 URL にアクセスしたユーザーが「404 Not Found」になってしまい、SEO 的にも悪影響を与えます。

そこで活用できるのが、Apache の .htaccess ファイルを利用したリダイレクト設定です。今回は、mod_rewrite を使ったリダイレクト方法について解説します。

1. 基本的な 301 リダイレクトの設定

301 リダイレクトは、恒久的な URL の変更を示し、検索エンジンにも新しい URL を認識させるのに適しています。以下のコードを .htaccess に記述することで、特定の URL を新しい URL へリダイレクトできます。

旧URL : https://example.com/old-url/
新URL : https://example.com/new-url/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^old-url$ https://example.com/new-url/ [R=301,L]
</IfModule>

コードの解説

  • RewriteEngine On
    • URL 書き換えを有効にします。
  • RewriteBase /
    • リダイレクトのベースパスを指定します。
  • RewriteRule ^old-url$ https://example.com/new-url/ [R=301,L]
    • ^old-url$:アクセスされた URL が old-url に一致する場合
    • https://example.com/new-url/ にリダイレクト
    • [R=301,L]
      • R=301:301(恒久的なリダイレクト)として処理
      • L:このルールが適用されたら、他のルールは処理しない

2. mod_rewrite を使用するための条件

mod_rewrite を使用するには、Apache の mod_rewrite モジュールが有効になっている必要があります。サーバーの設定によってはデフォルトで有効になっていないこともあるため、必要に応じてサーバー管理者に確認してください。

また、.htaccess ファイルが正しく機能するためには、AllowOverride が適切に設定されていることも重要です。

3. 応用編:動的なリダイレクト

上記の方法は特定の URL に対するリダイレクトですが、正規表現を活用すれば、特定のパターンに一致する複数の URL をリダイレクトできます。

例: old-category 以下のすべてのページを new-category にリダイレクト

RewriteRule ^old-category/(.*)$ https://example.com/new-category/$1 [R=301,L]

このルールでは、old-category/ の後ろに続くどんな文字列((.*))も new-category/ にそのまま引き継いでリダイレクトします。

4. まとめ

.htaccess を使った 301 リダイレクトは、URL 変更時に必須の設定です。SEO を維持しつつ、ユーザーに新しいページへスムーズに誘導するために、適切なリダイレクトを設定しましょう。

  • 特定のページをリダイレクト
    • RewriteRule ^old-url$ https://example.com/new-url/ [R=301,L]
  • ディレクトリごとリダイレクト
    • RewriteRule ^old-category/(.*)$ new-category/$1 [R=301,L]

サーバーの設定に注意しながら、適切なリダイレクトを行いましょう!