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

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

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

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

Q&A

解決済

1回答

2019閲覧

クエリ文字が含まれるURLをリダイレクトしたい

shiba4

総合スコア2

.htaccess

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

0グッド

0クリップ

投稿2022/03/16 10:42

クエリー文字が含まれているURLをリダイレクトしたいのですが、リダイレクト先にクエリ文字が含まれた状態で404エラーを検出してしまいます。

リダイレクト元:ドメイン/doctor/?p=642
リダイレクト先:ドメイン/blog/20170202
サーバー:apache
リダイレクト方法:.htaccess

検証した内容

RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)p=642(&|$) RewriteRule ^doctor/$ ドメイン/blog/20170202/? [R=301,L]

上記の記述で正しい処理になりませんでした。正規表現の部分など、添付の参考サイトがとてもわかりやすかったのですが、どこが間違っているのか教えていただきたいです。

ちなみになんですが、RewriteEngine Onについては<IfModule mod_rewrite.c>の冒頭に記述していれば全てのRewriteRuleに適用される認識であっていますでしょうか?
宜しくお願い致します。

参考URL
クエリ文字列を含むURLのhtaccessリダイレクト方法
https://techbitingbug.com/htaccess-query-redirect/

クエリー文字列が含まれるURLを.htaccessでリダイレクトしたい
https://q.hatena.ne.jp/1341680846

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

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

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

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

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

guest

回答1

0

ベストアンサー

この通り書いているのでしょうか?
ホスト名は書かず、

Apache

1RewriteEngine On 2RewriteCond %{QUERY_STRING} (^|&)p=642(&|$) 3RewriteRule ^doctor/$ /blog/20170202/? [R=301,L]

ですね。

ちなみになんですが、RewriteEngine Onについては<IfModule mod_rewrite.c>の冒頭に記述していれば全てのRewriteRuleに適用される認識であっていますでしょうか?

はい。一度だけ書けば良いです。
また、<IfModule mod_rewrite.c>とかは書かない方が良いです。意味を理解していますか?

投稿2022/03/16 13:01

otn

総合スコア86313

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

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

shiba4

2022/03/16 14:04

> この通り書いているのでしょうか? ホスト名は書かず、 すみません情報に漏れがありましたが、リダイレクト先は別のドメインになります。 なのでRewriteRuleの第2引数はホスト名は必須だと思いました。 <IfModule mod_rewrite.c> こちらのルールに関してですがあまり理解はしておらず、RewriteEngine Onの宣言をするために必須のタグかと思っていました。 ちなみにこの.htaccessファイルは別の業者から引き継いでいますので、至る所に<IfModule mod_rewrite.c></IfModule>のタグがあります。
otn

2022/03/16 14:24

別ホストなら、http:// か https:// から書く必要があります。 > RewriteEngine Onの宣言をするために必須のタグかと思っていました。 不要です。 害が出るケースはあまりないので、書いていても良いですが、書くメリットが無いです。
shiba4

2022/03/17 05:02

>別ホストなら、http:// か https:// から書く必要があります。 こちらhttps://のフルパスで記述はしてあります。 >害が出るケースはあまりないので、書いていても良いですが、書くメリットが無いです。 このケースだと特に害はなさそうですが、他に思い当たる節はありますでしょうか?
otn

2022/03/17 09:16

どんなURLを与えると、どんな結果になるのでしょう? 現象が不明ではなんとも言いがたいです。 過去にこのサイトの質問で何度もあったのは、 「他にも(別目的の)リダイレクトの記述があり、そちらが原因でした」 ということですね。
shiba4

2022/03/18 10:49

結果としては、 【与えるURL】 https://ドメイン/doctor/?p=642 【結果】 https://別ドメイン/blog/〇〇/?p=642 といった感じで別の階層+クエリ文字が含まれている404ページに飛ばされます。 301リダイレクト自体は成功しているようですが、クエリ文字が引き継いでいる点が気になります。 この情報から推測できますでしょうか、、、
otn

2022/03/18 13:32

お書きの3行だけでは、そういう現象にならないので、やはり他の記述の影響では無いかと思います。
shiba4

2022/03/22 01:53

ありがとうございます! それでしたら他の要素を確認してみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問