・元々index.htmlというファイルが存在します
・xxx/xxx/index.html?aaa=1&bbb=2というURLを叩いた際に
index.cgi?aaa=1&bbb=2にリダイレクトしたい
・以下の記述をすると、普通にindex.htmlを見ても
(パラメータが無い状態で見ても)リダイレクトされてしまう
# RedirectMatch "xxx/(.*)/index.html?aaa=1&bbb=2
指定のパラメータがついている場合だけ、リダイレクトさせたいのです。
具体的な書き方や、サンプルを示して頂ける方、御教示ください。宜しくお願いします。
Rewriteモジュールを使うといいでしょう。
以下に、記述例を示します。
RewriteEngine On RewriteBase /xxx/xxx RewriteRule index\.html\?aaa=1\&bbb=2 index.cgi?aaa=1&bbb=2 [L]
mod_aliasではなくmod_rewriteを用いる事が可能ならば
RewriteEngine on RewriteRule ^/xxx/(.*)/index.html?(.*) /xxx/$1/index.cgi?$2 [L]
といったような感じに直せば良いのですが
mod_aliasではお望みのようなことは出来なかったと思います。
ありがとうございます。mod_rewrite了解です。試してますが、なかなか上手くいきません。。
www.hoge.com/zzz/xxx/yyy/index.html?aaa=1&bbb=2
へのアクセスを
www.hoge.com/zzz/xxx/index.cgi?aaa=1&bbb=2
yyy はどんな値が来るか不問
aaa, bbb などのクエリは名前も値も数も不問 全てを index.cgi へ渡す
へ渡すと仮定して回答します。
zzz のディレクトリへ以下の内容の .htaccess を置きます。
RewriteEngine On RewriteBase /zzz RewriteRule ^aaa/yyy/index.html aaa/index.cgi [QSA,L]
zzz ではなく、xxx がルート直下であるなら、 RewriteBase の行は不要です。
頂いたものを元に色々いじったら、できました!
大変ありがとうございました。感謝します。
mod_rewriteを読み込んでる前提です.
テスト環境がなくて試してませんがこんな感じでしょうか.
RewriteEngine on RewriteCond %{REQUEST_URI} index\.html RewriteCond %{REQUEST_URI} aaa=.* RewriteCond %{REQUEST_URI} bbb=.* RewriteRule ^/xxx/index\.html\?aaa=(.*)&bbb=(.*)$ /xxx/index.cgi?aaa=$1&bbb=$2 [L]
アクセスログを見ながら設定すると,どこにリダイレクトされているか分かりますよ.
頂いたものを元に色々いじったら、できました!
大変ありがとうございました。感謝します。
ありがとうございます。でも、上手く動きません。。
大変恐縮ですが、再度アドバイスいただけますでしょうか。
・bbbの値は可変です。
・xxx/xxx/index.html?aaa=1&bbb=123456というURLを叩いた際に
xxx/index.cgi?aaa=1&bbb=123456に飛ばしたいです。
rewritebaseの値が変わってくると思い、いろいろいじっていますが上手くいきません。
出来れば是非たすけてください!