クエリー付のリダイレクトは「mod_rewrite」を使うべし

  • 投稿日:
  • by

URLの転送などで、Apacheに設定することが出来る、「Redirect」と「RedirectMatch」

しかし、以下のようにクエリーがついたURLを、すべて一つのURLにリダイレクトしようとすると、「Redirect」と「RedirectMatch」では無理なようです。

Redirect /abc/ /def/index.php
RedirectMatch /abc/(.*)$ /def/index.php

そもそも、「mod_alias」がクエリーまで扱っていないそうな。。

なので、

/abc/test.cgi?no=1&id=2

というリクエストが来ても、

/def/index.php?no=1&id=2

という風にリダイレクトされてしまう。


ということで、こういう場合は、「mod_rewrite」を使うとよい。

こんな感じ

RewriteEngine On
RewriteRule /abc/(.*)$ /def/index.php [R=301,L]


こうすることにより、クエリーはすべて破棄される


まぁ、本来の「mod_rewrite」の使い方ではないと思われるが、こういった使い方もあるということで(^^;)


本来の使い方なら、以下のページなどが参考になると思われる。





Apache―WWWサーバの構築と管理
秋本 らいむ 寺尾 英作
ソフトバンククリエイティブ
売り上げランキング: 304010
おすすめ度の平均: 5.0
5 買って手元に置いておきたい一冊


Apache WebサーバーBlack Book
グレッグ ホールデン マシュー ケラー Greg Holden Matthew Keller IDEAC
インプレス
売り上げランキング: 421844
おすすめ度の平均: 4.0
4 手ごろなリファレンス
4 Apache WebサーバーBlackBook


Windows版 個人で立てるWebサーバー Apache入門
ゲイザー
ディーアート
売り上げランキング: 293674
おすすめ度の平均: 4.5
5 初心者向けの良書
4 apacheの入門書はこの本だけか?