• 締切済み

apacheにおいてmod_rewriteのRewriteRuleを動的に設定したい

apache2.xにおいて、mod_rewriteを用いて URLの動的な書き換えを行っていますが、 正規表現ではなく、URLの一部を用いて、外部(DB等)に問い合わせて、 その結果を元に書き換えができる方法を探しています。 例えば http://example.co.jp/aaa/ というURLにアクセスがあった場合、 aaaをキーにしてDBに問い合わせて、その結果を元に rewriteを行う、といったイメージです。 mod_rewriteのマニュアルを読んだのですが、 そのような事が出来そうな項目はありませんでした。 方法or代替策等ご存じの方 教えていただければと思います。

みんなの回答

回答No.1

mod_rewriteとCGIやPHPを組み合わせれば大丈夫じゃないでしょうか。 例えば、リクエストURLが hogehoge/aaa/bbb の場合、 hogehoge.php?id=aaa&mode=bbb というPHPに変数を渡すような正規表現を /hogehoge/(.+)/(.+) /hogehoge.php?id=$1&mode=$2 のように指定し、表示すれば良いです。 Yahooやブログ等多くのページで使われている(であろう)技術ですね。 (最近ではphpを使っていてもURL上は/hogehoge/aaa/bbb.htmlのようなページがとても多くなってきています) 参考まで。

mmm_hhh
質問者

補足

回答ありがとうございます。 質問が悪かったみたいなので、補足させていただきます。 基本的にやりたいことは仰せのとおりなのですが、 hogehoge/aaa/bbb を hogehoge.php?id=ccc&mode=bbb にrewriteする方法を探しています。 ここで出てくるcccは RDBに問い合わせてaaa<-->cccの対応を取得しています。 つまり、 1.リクエスト hogehoge/aaa/bbb 2.DB問い合わせ (ex : SELECT column FROM table WHERE dir = 'aaa' LIMIT 1;) 3.2のcolumnを元にrewrite hogehoge/aaa/bbb <--> hogehoge.php?a=ccc&b=bbb といった流れが出来ないか模索しております。 よろしくお願い致します。

関連するQ&A

専門家に質問してみよう