目次

この記事の目次です。

1. htaccessのパラメータ付きURLのリダイレクト方法
2. 別のURLにリダイレクトする際にパラメータを引き継ぐ方法
3. 別のURLにリダイレクトする際にパラメータを引き継がない方法
4. 別のURLにリダイレクトする際にパラメータを上書きする方法
5. 別のURLにリダイレクトする際にパラメータを引き継ぎつつ付加する方法
6. 特定のパラメータがあるときだけリダイレクトする方法

関連記事
更新履歴

1. htaccessのパラメータ付きURLのリダイレクト方法

パラメータ付きURLのリダイレクト設定について見ていきます。

2. 別のURLにリダイレクトする際にパラメータを引き継ぐ方法

別のURLにリダイレクトする際にパラメータを引き継ぐ場合はURLの「?」以降を記述しなければそのまま引き継がれます。

例えば、「http://<ドメイン>/before/index.php?aaa=bbb」のアクセスをパラメータを変えずに「https://<ドメイン>/index.php?aaa=bbb」にパラメータを引き継いでリダイレクトする場合です。

RewriteEngine on
RewriteRule ^before/index.html$ https://<ドメイン>/index.php [R=301,L]

3. 別のURLにリダイレクトする際にパラメータを引き継がない方法

別のURLにリダイレクトする際にパラメータを引き継がない場合はURLに「?」をつけます。

例えば、「http://<ドメイン>/before/index.php?aaa=bbb」のアクセスをパラメータを付与しない「https://<ドメイン>/index.php」にリダイレクトする場合です。

RewriteEngine on
RewriteRule ^before/index.html$ https://<ドメイン>/index.php? [R=301,L]

4. 別のURLにリダイレクトする際にパラメータを上書きする方法

別のURLにリダイレクトする際にパラメータを上書きする場合はURLの「?」以降を記述します。

例えば、「http://<ドメイン>/before/index.php?aaa=bbb」のアクセスをパラメータを変えずに「https://<ドメイン>/index.php?page=ddd」にパラメータを引き継いでリダイレクトする場合です。

RewriteEngine on
RewriteRule ^before/index.html$ https://<ドメイン>/index.php?page=ddd [R=301,L]

5. 別のURLにリダイレクトする際にパラメータを引き継ぎつつ付加する方法

別のURLにリダイレクトする際にパラメータを引き継ぎつつ付加する場合はURLの「?」以降を記述し、「QSA」を指定します。

例えば、「http://<ドメイン>/before/index.php?aaa=bbb」のアクセスをパラメータを変えずに「https://<ドメイン>/index.php?page=ddd&aaa=bbb」にパラメータを引き継いでリダイレクトする場合です。

RewriteEngine on
RewriteRule ^before/index.html$ https://<ドメイン>/index.php?page=ddd [R=301,QSA,L]

6. 特定のパラメータがあるときだけリダイレクトする方法

特定のパラメータがあるときだけリダイレクトする場合は「%{QUERY_STRING}」を判定します。

パラメータを引き継ぐ場合

特定のパラメータがあるときにパラメータを引き継いでリダイレクトする場合の例です。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^aaa=123$
RewriteRule ^test https://htaccess-support.com/test2 [L,R=301]

パラメータを引き継がない場合

特定のパラメータがあるときにパラメータを引き継がないでリダイレクトする場合の例です。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^aaa=123$
RewriteRule ^test https://htaccess-support.com/test2? [L,R=301]

参考1)「%{QUERY_STRING}」を用いたリダイレクトの例(文字列の値が指定される第1パラメータにヒットさせる例)

以下は、「%{QUERY_STRING}」を用いたリダイレクトの例です。 文字列の値が指定される第1パラメータにヒットさせる正規表現を使用しています。

パラメータを引き継ぐ場合

特定のパラメータがあるときにパラメータを引き継いでリダイレクトする場合の例です。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^aaa=(\w+&.*)$
RewriteRule ^test https://htaccess-support.com/test2 [L,R=301]

パラメータを引き継がない場合

特定のパラメータがあるときにパラメータを引き継がないでリダイレクトする場合の例です。

RewriteEngine on
RewriteCond %{QUERY_STRING} ^aaa=(\w+&.*)$
RewriteRule ^test https://htaccess-support.com/test2? [L,R=301]

参考2)「%{QUERY_STRING}」を用いたリダイレクトの例(特定のパラメータを除いてパラメータなしにリダイレクトする例)

以下は、「%{QUERY_STRING}」を用いたリダイレクトの例です。 特定のパラメータを除いてパラメータなしにリダイレクトする例です。

RewriteCond %{QUERY_STRING} ^.+$
RewriteCond %{QUERY_STRING} !^aaa=.+$
RewriteRule ^.* https://htaccess-support.com/? [L,R=301]

動作としては、まず「RewriteRule」の行が実行されて、そのあとに「RewriteCond」のところが上から順に実行されます。 前に実行されたものを対象に次が実行されます。

関連記事

関連記事です。

リダイレクト

用語の意味や.htaccessの設定(正規表現やパラメータ)などリダイレクトについて解説しています。

詳細

更新履歴

更新履歴になります。

トップ手順・方法.htaccessのパラメータ付きURLのリダイレクト方法