• ベストアンサー

RewriteRuleの書き方

畏れ入ります。RewriteRuleの書き方で悩んでいます。 単純に http://url/abc としてurl配下のindex.phpにabcを渡したいのですが・・・ 例えば http://url/abc_def とアクセスした場合には RewriteRule (.*)_(.*) index.php?$1_$2 で$1にabc$2にdefが取れてきました。 しかし、_で分ける必要が無い為、 RewriteRule (.*) index.php?$1 で http://url/abc でアクセスとしてみたところ・・・ なぜか$1には「index.php」が取れてきました・・・ http://url/abc のアクセスで $1にabcが取れるようなRewriteRuleを書くにはどう書いたら良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

mod_rewriteですが、特に引数を渡す必要は無いんじゃないかな?と思います。 index.phpが取れるってのも良く解かりませんが・・・ $_SERVER['QUERY_STRING']の中身がindex.phpになるんでしょうか? 不思議な現象ですね。 とりあえず、前回のスレッドに書いた、$_SERVER['REQUEST_URI']ってのを試してみてください。 index.php ---------------------------------- <?php echo $_SERVER['REQUEST_URI']; $a = split("/", $_SERVER['REQUEST_URI']); print_r($a); $b = split("_", $a[1]); print_r($n); ?> ---------------------------------- こんな感じでしょうか。

azicyan
質問者

お礼

たびたびありがとうございます。 'REQUEST_URI'を使うと取ることが出来ました・・・ ただ$1で取った方が慣れていて、楽で良いなあとおもったのですが・・・ RewriteRuleの書き方の例はたくさんあるのですが、 結構くせがあるらしく、なかなか思い通りに行きませんでした。 ほとんどのページにかかれている例のように以下のようにすると RewriteRule ^/(.*) index.php?$1 http://url/abc ではアクセスできなくなり、 なんとhttp://url//abc でabcが取れるようになりました。 なかなか難しいんですね。。。

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

詳しくないですが、Condition挟んでもダメでしょうか? RewriteCond %{REQUEST_URI} !(index.php) RewriteRule (.*) index.php?$1

azicyan
質問者

お礼

試してみます。 書き込みありがとうございます!

関連するQ&A