RewriteRuleで色々調べてたら、こんな記事が見つかった。
で、htaccessでいちいち追加するの面倒だなーと思い、PHPでできないかやってみようと思い立つ。
1.arg_separator.inputを使ってみる
phpオプションのarg_separator.inputで実験。
セパレータを追加するだけなので断念
使用すると下記のようになる。
Ex.
hoge.php?a=1/a=2
hoge.php?a=1;a=2
hoge.php?a=1&a=2
2.ごりごりやってみる
さっくり出来る方法がないっぽいので、ごりごりやってみることにする。
この方法で実際できたので、http://iidx.jp/mobiledb/を例に。
http://iidx.jp/mobiledb/?carrier=ez
↓
http://iidx.jp/mobiledb/info/ez/
となってスマートになった気がする!
で、種明かし。
前提として、Apache(もしくはhtaccess)「Multiviews」 が有効になっていること。
「Multiviews」とはApacheがファイルをマップするタイプマップを自動で作ってくれるオプション。
但し、携帯系でこれを使うと一部の端末で正常に見れなくなる。
(タイプマップ無視して、拡張子で勝手にマッピングする端末とか…)
まず実体のhttp://iidx.jp/mobiledb/index.phpから。
$_SERVER[PATH_INFO]を「/」でsplitするだけ!
list($null,$carrier)= split("/",$_SERVER[PATH_INFO]);
こんな感じ。実にシンプル!
PATH_INFOは「/」から始まるため先頭は不要になるので適当に捨てる。
$nullとしてるのはこんなん使いそうにないから(笑
で、次。
http://iidx.jp/mobiledb/ez/となるのが理想だったが、そのためには
http://iidx.jp/mobiledb.phpで作る必要がある。
が、トップ配下にごちゃごちゃ置きたくなかったので苦肉の策。
http://iidx.jp/mobiledb/index/ez/よりhttp://iidx.jp/mobiledb/info/ez/
のがいいじゃないってことで、http://iidx.jp/mobiledb/info.phpを置いてみる。
中身は、index.phpと同じ物でいいんだけれども、メンテが大変なので、
index.phpをまるごとincludeしてやる。そうすると簡単。
■メリット
・URLが短くなる
⇒変数名が必要なくなるため
・恥ずかしい変数名を見られなくて済む!
⇒変数名が必要なくなるため
・ちょっとセキュリティ強化?
⇒変数名が必要なくなるため
変数名が見えなくなるのっていいね!
■デメリット
・変数の順番間違えると大変
変数名でなく順番で取得するため。
デメリットというほどデメリットでもないかも。
単に管理の仕方が変わるだけ。
たまにはPHPネタも書いてみた。
ソースの公開なんてものはとても恥ずかしくてできないので、
カテゴリを作ったは良いがネタがなくてとても困る!