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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

リダイレクト

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

Q&A

解決済

1回答

2057閲覧

クエリ付URLを固有文字列へ301リダイレクトしたい

Samson818

総合スコア162

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

リダイレクト

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

0グッド

0クリップ

投稿2017/03/17 05:45

###前提・実現したいこと
wordpressを使用した新ページに
旧ページのURLへの被リンクやgoogleの評価のため
301リダイレクトを作成したい。

クエリなしのURLはリダイレクト成功しました。
クエリあり、かつリダイレクト後もクエリの数字がそのまま利用できる物も成功しました。

クエリあり、リダイレクト前は数字、リダイレクト後は固有文字列へリダイレクトするという
ページ群に四苦八苦しています。
どうクエリ以下の数字を条件に反映させてあげればよいでしょうか?

###発生している問題・エラーメッセージ

該当行 /memberbl/index.php?ID=1 を /archives/member/yamada_tarou にしダイレクトしたい。 /memberbl/index.php?ID=2 を /archives/member/suzuki_ichirou にリダイレクトしたい。 クエリ付URLを固定文字列へ変更したい。 ###該当のソースコード
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^memberbl/index.php?ID=1$ /archives/member/yamada_tarou [R=301,L] RewriteRule ^memberbl/index.php?ID=2$ /archives/member/suzuki_ichirou [R=301,L] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> ```

###試したこと
4日ほど前からリダイレクトの学習を始めました。
RewriteEngine On #リライトエンジンON
RewriteBase / #ドキュメントルートからのパスにセット
RewriteRule ^index.php$ - [L] #無限ループの防止。index.php以外へのリクエストの場合にRewriteを行う。
RewriteCond %{REQUEST_FILENAME} !-f #[!-f]ファイル以外の場合は真を、ファイルの場合は偽を返す。
RewriteCond %{REQUEST_FILENAME} !-d #[!-d]ディレクトリ以外の場合は真を、ディレクトリの場合は偽を返す。
RewriteRule . /index.php [L] #[.]は/index.phpに書き換えられる

クエリなしのURLはリダイレクト成功しました。
RewriteRule ^aboutus/index.html$ /aboutus [R=301,L]
/aboutus/index.html -> /aboutus へリダイレクト成功

昨日、クエリあり、かつリダイレクト後もクエリの数字がそのまま利用できる物も成功しました。
RewriteCond %{REQUEST_URI} (^/servicesbl/)
RewriteCond %{QUERY_STRING} ^ID=(.)$
RewriteRule .
/services/id%1? [R=301,L]

/servicesbl/index.php?ID=1 -> /services/id1 へリダイレクト成功
/servicesbl/index.php?ID=99 -> /services/id99 へリダイレクト成功

昨日から今日にかけて、リダイレクト前は数字、リダイレクト後は固有文字列へリダイレクトするという
ページのリダイレクトに挑戦しています。

/memberbl/index.php?ID=1 を
/archives/member/yamada_tarou にしダイレクトしたい。

条件の側にクエリを含めることができたらうまくいくと考えています。
イメージでは以下のような者だと思いますが、以下ではうまくいきませんでした。
RewriteCond %{REQUEST_URI} (^/memberbl/index.php?ID=1)

どうクエリ以下の数字を条件に反映させてあげればよいでしょうか?

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

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

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

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

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

guest

回答1

0

自己解決

今朝、試したと思っていた例を
今もう一度試したらあっさりうまくいきました。

RewriteCond %{REQUEST_URI} (^/membersbl/)
RewriteCond %{QUERY_STRING} ^ID=1$
RewriteRule .* /archives/member/yamada_tarou? [R=301,L]

1000もあるわけじゃないので、これで対応したいと思います。

投稿2017/03/17 06:33

Samson818

総合スコア162

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問