質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

解決済

2回答

546閲覧

【新】パラメータ付URLからパラメータ付URLへの301リダイレクトの書き方

pikachin

総合スコア6

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

1クリップ

投稿2020/02/26 04:06

SEO対策の観点から、同じコンテンツのページURLを統合したいため、
301リダイレクトを行いたいのですが、
パラメータ付きのURLからパラメータ付きへのリダイレクトのためなのか、
どうしてもリダイレクトの動作が発生しません。

https://abc.com/products/list?category_id=289(飛ばしたい元)

https://abc.com/products/list?category_id=295(飛ばしたい先)

以下の記述ではきちんと動作しませんでした。
RewriteCond %{QUERY_STRING} ^category_id=289$
RewriteRule ^products/list$ /products/list?category_id=295 [R=301]

どなたか教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

H40831

2020/02/26 04:20 編集

言語とか環境とか、どういう方法でリダイレクトしようとしてるかは明示してタグつけたほうがいいですよ
Y.H.

2020/02/26 04:27 編集

・.htaccessですか?それとも httpd.conf系のconfですか? ・.htaccess の場合、どこに配置してますか?(DocumentRoot直下?) ・質問タイトルの【新】とは? https://teratail.com/help/question-tips#questionTips3-1 ・記載されているのは質問に記載の2行のみですか?それとも他に何か記載されているのでしょうか?
Y.H.

2020/02/26 04:24

> きちんと動作しませんでした とは具体的にどうなるのですか?
pikachin

2020/02/26 04:35

もろもろご指摘ありがとうございます。内容修正してみました。なお.htaccessに記載している他の内容は、httpsとwww無しに統一する記述のみとなります。
guest

回答2

0

特に問題なく動作します。

質問に提示されている部分のみから回答です。
これ以上は「質問への追記・修正の依頼」に記載したものへの回答とコード(他の設定)を具体的に質問に記載いただかないと誰にもわからないと思います。

console

1# cat /var/www/html/.htaccess 2RewriteEngine On 3RewriteCond %{QUERY_STRING} ^category_id=289$ 4RewriteRule ^products/list$ /products/list?category_id=295 [R=301,L] 5 6# curl -I http://localhost/products/list?category_id=289 7HTTP/1.1 301 Moved Permanently 8Date: Wed, 26 Feb 2020 04:42:51 GMT 9Server: Apache/2.4.29 (Ubuntu) 10Location: http://localhost/products/list?category_id=295 11Content-Type: text/html; charset=iso-8859-1

投稿2020/02/26 04:47

編集2020/02/26 04:48
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pikachin

2020/02/26 06:50

質問にきちんと回答できておらず失礼しました。 ・.htaccessですか?それとも httpd.conf系のconfですか? .htaccessです。 ・.htaccess の場合、どこに配置してますか?(DocumentRoot直下?) エックスサーバーを使用しており、管理画面内の「.htaccess編集」で書き換えをしております。これがどこに配置されているのかは、当方素人につき申し訳ないのですがわかりません。 ・質問タイトルの【新】とは? https://teratail.com/help/question-tips#questionTips3-1 以前、似たような質問をさせて頂いたのですが、URLが少し変わった(.phpの記述がなくなった)ことでリダイレクトが効かなくなったので、同じ問題にぶつかる方のために、似たような質問ということで【新】をつけました。 ・記載されているのは質問に記載の2行のみですか?それとも他に何か記載されているのでしょうか? とは具体的にどうなるのですか? DirectoryIndex index.php index.html .ht RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteEngine On RewriteCond %{HTTP_HOST} ^www.abc.com$ RewriteRule ^(.*)$ https://abc.com/$1 [R=301,L] RewriteEngine On RewriteRule ^products/list.php(.*) /products/list$1 [R=301,L] RewriteCond %{QUERY_STRING} product_id=([0-9]*) RewriteRule ^products/detail.php$ /products/detail/%1? [R=301,L] RewriteEngine On RewriteCond %{QUERY_STRING} ^category_id=289$ RewriteRule ^products/list$ /products/list?category_id=295 [R=301] を記述しており、リダイレクトがききません。 うまくいけば同じように複数のページをリダイレクトさせる予定です。 ・きちんと動作しませんでしたとは具体的にどうなるのですか? 改めて確認したのですがリダイレクトされない状況です。 こちらで回答になっているか不安ですが、どうぞ宜しくお願い致します。
Y.H.

2020/02/26 07:07 編集

ここに記載するより、質問に追記されたほうが何かわかる人に見てもらえる確率が上がりますよ。 こちらでは同じ設定で特に問題なくリダイレクトされますね。 確認時はブラウザのキャッシュをクリア後確認されてますよね。。。 ※ abc.comは実在のドメインなのでexample.comなど例示用ドメインで記載されたほうがいいですよ。  悪意のあるサイトであったり(今後悪意あるサイトになったり)した場合、この質問やコメントから誘導してしまうことになるので。。。
guest

0

自己解決

RewriteEngine On
RewriteCond %{REQUEST_URI} products/list
RewriteCond %{QUERY_STRING} ^category_id=289
RewriteRule ^(.*)$ /products/list?category_id=295 [R=301,L]

上記の記述でパラメータ付きの動的URLのリダイレクトが成功しました。

なお、以下の記述で成功される方もいるようですが、どんな環境下なのかわかりません。
ブラウザのキャッシュをクリアしているのでしょうか。。。今一度確認の必要有りかもです。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^category_id=289$
RewriteRule ^products/list$ /products/list?category_id=295 [R=301]

投稿2020/02/27 07:41

pikachin

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問