パラメーター付URL同士の301リダイレクトと.htaccessの書き方

パラメーター付URL同士の301リダイレクトと.htaccessの書き方 WEB制作・集客
この記事は約3分で読めます。

301リダイレクトとは

リダイレクトとは、ページAに訪れたユーザーをページBに転送させることです。
リダイレクトには301、302、303、307があります。

  • 301:新しいURLヘ永久的に変更された際に用います。
    サイトリニューアルやブログ記事の統合などでURLが完全に変わった際に利用します。
  • 302:一時的に別のURLヘ遷移する際に用います。
    サイトのエラーが発生した時にエラーページへ遷移させる為に利用します。
  • 303:GETメソッドでアクセスする際に用います。
    フォームから投稿した後にトップページへリダイレクトさせる場合などに利用します。
  • 307:一時的に別のURLヘ遷移する際に用います。
    302と似ているが、リダイレクト先にリダイレクト元と同一メソッドを引き継ぎます。

301リダイレクトの利用シーン

301リダイレクトは恒久的に転送する処理で、Googleなどの検索エンジンに対して転送元ページの評価を引き継ぎます。

その為、サイト・リニューアルでページURLが変わったり、SEO対策で複数ページを統合する際にGoogleの評価を下げない為に301リダイレクトを利用します。

301リダイレクトの.htaccessの書き方

301リダイレクトの.htaccessの書き方をご説明します。

基本

301リダイレクトの.htaccessの基本の書き方です。

RewriteEngine on
RewriteRule ^ URL-A URL-B [R=301,L]

URL-Aにアクセスがあった際にユーザーをURL-Bに転送します。

条件付き

条件付きの301リダイレクトの.htaccessの書き方です。

RewriteEngine on
RewriteCond 条件
RewriteRule ^ URL-A URL-B [R=301,L]

条件が満たされた場合にのみ、URL-Aにアクセスがあった際にユーザーをURL-Bに転送します。

パラメーター付きのURLを301リダイレクトさせる際の.htaccessの書き方

パラメーター付きのURLの場合、上記記述方法では正常動作しません。

例えば、EC-CUBEのカテゴリーを再編成した場合、商品一覧ページを転送する必要があります。
EC-CUBEの商品一覧ページは以下のようなパラメーター付きURLです。

https://thankuthanku.com/products/list.php?category_id=1

ただ、?が含まれている場合、?以降を認識ない為以下のように記述する必要があります。

RewriteCond %{QUERY_STRING} category_id=1

よって、カテゴリーID=1の商品ページを、カテゴリーID=2の商品ページへ転送する場合の記述は以下となります。

RewriteEngine on
RewriteCond %{REQUEST_URI} products/list.php
RewriteCond %{QUERY_STRING} category_id=1
RewriteRule ^ https://%{HTTP_HOST}/%{REQUEST_URI}?category_id=2 [R=301,L]

タイトルとURLをコピーしました