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

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

新規登録して質問してみよう
ただいま回答率
85.48%
.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

1943閲覧

パラメーター付きURLの301リダイレクトについて

退会済みユーザー

退会済みユーザー

総合スコア0

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2019/06/24 07:49

編集2019/06/24 07:56

CMSで作成していたサイトの一部をリニューアルし、静的ページで作成し直すことになりました。
その為、パラメーター付きのURLを作り直した静的URLに301リダイレクトをさせたいのですが上手くいきません…。

●やりたいこと
http://www.aaa.com/shop/shop.php?id=60
にアクセスしたら
http://www.aaa.com/shop/shop_test.html
に301リダイレクトしたい。

元々.htaccessには下記のような記述がありました。

htaccess

1 2# This file is made by RewriteRule Tool. 3AddOutputFilter INCLUDES;DEFLATE .html 4 5# Enable RewriteEngine. 6RewriteEngine On 7 8# This file is made by RewriteRule Tool. 9AddOutputFilter INCLUDES;DEFLATE .html 10 11# Enable RewriteEngine. 12RewriteEngine On 13 14# 404 Error for Multidomain Directories. 15RewriteCond %{HTTP_HOST} ^aaa.com$ 16RewriteCond %{REQUEST_URI} ^/(test.aaa.com)/ 17RewriteRule ^(.*)$ /$1 [L,R=404] 18 19# Main RewriteRule for multidomain. 20RewriteCond %{HTTP_HOST} ^(test.aaa.com) 21RewriteCond %{REQUEST_URI} !^/(test.aaa.com)/ 22RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] 23 24Redirect permanent /campaign/201703/index.html /shop/shop.php?id=43 25 26#存在しないページのアクセスをTOPページにリダイレクト 27ErrorDocument 404 http://www.aaa/404/

この中にある、
[Redirect permanent /campaign/201703/index.html /shop/shop.php?id=43]
は、/campaign/201703/index.html→/shop/shop.php?id=43に飛ぶのはうまく言っているようなので、それを利用して下記のように書いてみたのですが上手くいかず、エラーもでませんでした。
(ただ打ったそのままのURLでサイトが表示されるだけ)

htaccess

1Redirect permanent /shop/shop.php?id=60 /shop/shop_test.html

その他いろいろ調べて、下記のような方法も試してみたのですが上手くいきません…。

htaccess

1# RewriteCond %{QUERY_STRING} shop/shop.php?id=60 2# RewriteRule ^(.*)$ http://www.aaa.com/shop/shop_test.html? [R=301,L]

どなたかお分かりになればご教授頂きたいです。
よろしくお願い致します。

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

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

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

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

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

m.ts10806

2019/06/24 07:51

タグはHTMLよりも.htaccessのほうが適切に思います。
退会済みユーザー

退会済みユーザー

2019/06/24 07:56

確かにそうですね! 修正しました。ありがとうございます。
guest

回答1

0

ベストアンサー

クエリパラメータを事前に指定する必要があります。

htaccess

1RewriteCond %{QUERY_STRING} ^id=60$ 2RewriteRule shop/shop.php /shop/shop_test.html? [NE,R=301,L]

末尾の?を削除するとパラメータを引き継ぎます

※最初の/を削除しました。

投稿2019/06/24 08:54

編集2019/06/24 09:13
rmrmnrm

総合スコア139

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

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

退会済みユーザー

退会済みユーザー

2019/06/24 09:10 編集

ご回答ありがとうございます! 書いていただいたコードをアップしてみたのですが、http://www.aaa.com/shop/shop.php?id=60にアクセスすると、id=60のページにそのまま飛んでしまいました…。 書く場所が悪いのでしょうか?? -----htaccess # This file is made by RewriteRule Tool. AddOutputFilter INCLUDES;DEFLATE .html # Enable RewriteEngine. RewriteEngine On # 404 Error for Multidomain Directories. RewriteCond %{HTTP_HOST} ^aaa.com$ RewriteCond %{REQUEST_URI} ^/(test.aaa.com)/ RewriteRule ^(.*)$ /$1 [L,R=404] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(test.aaa.com) RewriteCond %{REQUEST_URI} !^/(test.aaa.com)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] # Redirect Redirect permanent /campaign/201703/index.html /shop/shop.php?id=43 #存在しないページのアクセスをTOPページにリダイレクト ErrorDocument 404 http://www.aaa.com/404/ RewriteCond %{QUERY_STRING} ^id=60$ RewriteRule /shop/shop.php /shop/shop_test.html? [NE,R=301,L] -----
rmrmnrm

2019/06/24 09:13

すみません、こちらのコードが間違っていたので再度試していただけますか?
退会済みユーザー

退会済みユーザー

2019/06/24 09:24

いただいたコードで無事にリダイレクトすることができました! 何時間も困っていたので本当に助かりました…!! ありがとうございます!(∩´∀`)∩
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問