エイリアス機能なんかで、URLと実際のフォルダ名とが食い違っているとき
Uri::main() などのメソッドが返すURLはおかしくなる
http://localhost/hogehoge/piyo/fuga
プロジェクトhogehogeとしてhogehogeディレクトリに置いてあるとき
Uri::main() | http://localhost/hogehoge/piyo/fuga | |
Uri::base() | http://localhost/hogehoge/ | |
Uri::string() | piyo/fuga |
http://localhost/hogehoge2/piyo/fuga
hogehoge2へアクセスしてもhogehogeへ飛ぶようにしているとき
Uri::main() | http://localhost/piyo/fuga | ← hogehogeの霊圧が消えた |
Uri::base() | http://localhost/ | |
Uri::string() | piyo/fuga |
なぜこのような挙動になるのかは追っていない。
configでbase_urlを定義していれば防げそうだけど、baseを固定化したくないのでやめた。
暫定対処
<? function getbase(){ $url = $_SERVER["REQUEST_URI"]; $string = Uri::string(); $base = substr($url, 0, strpos($url,$string)); return $base; }
こんな関数を作ってごまかした。