2016年10月17日

クエリ文字列を含んだURLのリダイレクトに躓いていたんだけど解決したのでメモしときます【htaccess】


プログラム・HTML

ライブドアブログからWordPress に移行させる際に、各個別記事のパーマリンクは変更する事なくそのまま移行でき、カテゴリページについてはhtaccess でリダイレクト処理をして解決させました。

これで完璧!と思っていたら「ページ送り」の事をすっかり忘れてしまっていたのでした。

スポンサードリンク

ページ送りとは?

ページ送りについては面倒なので引用させていただきますw

ページ送りとは – 日本語表現辞典 Weblio辞書

webページにおいて、複数のページに分割されたコンテンツを閲覧する際に、ナビゲーションの機能を果たす、現在のページ位置などを表示する部分を意味する語。ページャー、ページネーションなどと呼ばれることもある。ページの上部や下部などに、横方向に配列するデザインが採られている場合が多い。

ライブドアブログとWordPressでページ送りのURLが違う

ライブドアブログのページ送りの2ページ目のURLは以下のようになっていました。

WordPressでは「PageNavi」というプラグインを使って、ページ送りを実装しているのですが、その場合2ページ目の場合のURLは以下になるのです。

これをリダイレクトするべく、カテゴリページ同様にhtaccessで「Redirect permanent」を使ってやってみたのですが、クエリ文字列を含んだURLのリダイレクトには使えないようで、上手くいきませんでした。

クエリ文字列とは?

クエリ文字列についても引用でww

クエリ文字列とは|クエリストリング|URLパラメータ|URL引数|query string - 意味 / 定義 / 解説 / 説明 : IT用語辞典

クエリ文字列とは、WebブラウザなどがWebサーバに送信するデータをURLの末尾に特定の形式で表記したもの。 Webアプリケーションなどでクライアントからサーバにパラメータを渡すのに使われる表記法で、URLの末尾に「?」マークを付け、続けて「名前=値」の形式で記述する。値が複数あるときは「&」で区切り、例えば http://example.com/foo/var.php?name1=value1&name2=value2 のように記述する。

RewriteCondとRewriteRuleを使ってリダイレクト

結論としては「Redirect permanent」ではなく「RewriteCondとRewriteRule」を使えばリダイレクトが可能なのですが、ググったソースコードをいくら試しても上手く行かず、ここでかなり時間を費やしました。

リダイレクトそのものは可能なのですが、リダイレクト後のURLの末尾に再びクエリ文字列が追加されてしまったりするのです。

本来はこのURLに飛ばしたいのですが

リダイレクト先のURLがこんな風になってしまったりするのです。

あきらめかけたのですが、なんとか類似する症状を解決したページを発見する事ができました。

これで無事解決です。転送先の末尾に「?」を付けるのがミソだったみたいです。


プロフィール

サムリ
個人アカウント


ブログ更新通知アカウント

月別アーカイブ

リンク

こちらももよろしく!

三郷ぐらし - 埼玉県三郷市の地域情報ブログ

オリジナルデザインのペット用品通販専門店 ペット名刺のハピテン