ウェブサイトの運営をしていると、ページの 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]
サーバーの設定に注意しながら、適切なリダイレクトを行いましょう!