/** * Path::init($query) * $query может взять из QUERY_STRING или из URI_REQUEST если используется modrewrite * Если в $query начинается с символов ./ или -~! будет проверка файла на доступность и переадресация на него **/ public static function init() { return Once::exec('infrajs::Path::init', function () { $res = URN::parse(); $res['request2ch'] = $res['request2'] ? in_array($res['request2'][0], array('-', '~', '!')) : false; /* Ситуация site.ru/adsf?-admin/ site.ru/sadf?vendor/infrajs/admin/ site.ru/asdf?vendor/infrajs/admin/index.php */ if ($res['request2ch'] || Path::theme($res['request2'])) { if ($res['param2']) { Path::redirect($res['request2'] . '?' . $res['param2']); } else { Path::redirect($res['request2']); } } /* Ситуация site/?login = site/login site/-asdf?login = site/-asdf?login site/catalog?contacts = site/contacts */ $res['requestch'] = $res['request'] ? in_array($res['request'][0], array('-', '~', '!')) : false; if (!$res['requestch'] && !Path::theme($res['request']) && $res['request2']) { //Чтобы работали старые ссылки if ($res['param2']) { Path::redirect($res['request2'] . '?' . $res['param2']); } else { Path::redirect($res['request2']); } } //exit; //$res['request2dir'] = Path::isdir($res['request2']); //$res['request2ext'] = Path::getExt($res['request2']); $res['requestdir'] = Path::isdir($res['request']); if (!$res['request']) { $res['requestdir'] = true; $file = './'; } else { $file = Path::theme($res['request']); } if ($res['requestch']) { //файл не проверяем. отсутствует всёравно идём в go $query = $res['query']; if ($res['requestdir']) { $p = explode('?', $res['query'], 2); $p[0] .= 'index.php'; $query = implode('?', $p); if (!Path::theme($query)) { $p = explode('?', $res['query'], 2); $p[0] .= 'index.html'; $query = implode('?', $p); } } if (Path::theme($query)) { Path::go($query); } } else { if ($file) { //Если файл отсутствует проходим дальше if ($res['requestdir']) { $p = explode('?', $res['query'], 2); $p[0] .= 'index.php'; $file = implode('?', $p); if (!Path::theme($file)) { $p = explode('?', $res['query'], 2); $p[0] .= 'index.html'; $file = implode('?', $p); } } if (Path::theme($file)) { //Если есть index.php в папке или просто указанный файл есть Path::go($file); } } } return $res['query']; }); }