diff --git a/library/think/Route.php b/library/think/Route.php index 296bc58a..a542fc43 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -217,8 +217,6 @@ class Route } if (!empty($rule)) { // 子域名部署规则 - // '子域名'=>'模块[/控制器/操作]' - // '子域名'=>'模块[/控制器/操作]?var1=a&var2=b&var3=*'; if ($rule instanceof \Closure) { // 执行闭包 $reflect = new \ReflectionFunction($rule); @@ -453,7 +451,7 @@ class Route public static function parseUrl($url, $depr = '/') { if (isset(self::$bind['module'])) { - // 如果有模块/控制器绑定 针对路由到 模块/控制器 有效 + // 如果有模块/控制器绑定 $url = self::$bind['module'] . '/' . $url; } // 分隔符替换 确保路由定义使用统一的分隔符 @@ -523,15 +521,7 @@ class Route } if (0 === strpos($val, ':')) { // URL变量 - if (strpos($val, '\\')) { - $type = substr($val, -1); - if ('d' == $type && !is_numeric($m1[$key])) { - return false; - } - $name = substr($val, 1, -2); - } else { - $name = substr($val, 1); - } + $name = substr($val, 1); if (isset($m1[$key]) && isset($pattern[$name]) && !preg_match('/^' . $pattern[$name] . '$/', $m1[$key])) { // 检查变量规则 return false; @@ -561,11 +551,7 @@ class Route $item = substr($item, 1, -1); } if (0 === strpos($item, ':')) { - if (strpos($item, '\\')) { - $var = substr($item, 1, -2); - } else { - $var = substr($item, 1); - } + $var = substr($item, 1); $matches[$var] = array_shift($paths); } else { // 过滤URL中的静态变量 diff --git a/library/think/Url.php b/library/think/Url.php index 3dd54458..3fc26ecc 100644 --- a/library/think/Url.php +++ b/library/think/Url.php @@ -30,8 +30,6 @@ class Url if (is_string($vars)) { // aaa=1&bbb=2 转换成数组 parse_str($vars, $vars); - } elseif (!is_array($vars)) { - $vars = []; } if (strpos($url, '?')) { @@ -42,8 +40,8 @@ class Url // 检测路由 if ($match = self::getRouteUrl($url, $vars)) { - // 处理路由规则中的特殊内容 - $url = str_replace(['\\d', '$'], '', $match); + // 处理路由规则中的特殊字符 + $url = str_replace('[--think--]', '', $match); } else { // 路由不存在 直接解析 $url = self::parseUrl($url); @@ -161,11 +159,7 @@ class Url } if (0 === strpos($val, ':')) { // URL变量 - if (strpos($val, '\\')) { - $name = substr($val, 1, -2); - } else { - $name = substr($val, 1); - } + $name = substr($val, 1); if (!$optional && !isset($vars[$name])) { // 变量未设置 return false; @@ -208,6 +202,9 @@ class Url if (!empty($alias[$name])) { foreach ($alias[$name] as $key => $url) { // 检查变量匹配 + if (strpos($url, '$')) { + $url = str_replace('$', '[--think--]', $url); + } if (self::pattern($url, $vars, $check)) { foreach ($vars as $key => $val) { if (false !== strpos($url, '[:' . $key . ']')) {