TP v5中Url Compat模式

简介: compatible对于配置pathinfo的支持,在Nginx作服务器、无数种系统要同时运行的环境,实在是一项很累赘的事情,而又不想很low的多个参数(像m、c、a)构造路由参数,我需要那种不必强制使用pathinfo的还可以伪pathinfo(用一个路由参数如s=/abc/ddd/ddd.html,参数名如route、s、r等)的框架。

compatible

对于配置pathinfo的支持,在Nginx作服务器、无数种系统要同时运行的环境,实在是一项很累赘的事情,而又不想很low的多个参数(像m、c、a)构造路由参数,我需要那种不必强制使用pathinfo的还可以伪pathinfo(用一个路由参数如s=/abc/ddd/ddd.html,参数名如route、s、r等)的框架。

目前TP的v5版本下,仅可支持路由解析时的Compat模式,而不支持路由构建时的Compat模式。

增加一个配置项URL_MODE,找到构建Url的类\think\Url::build方法,在参数组装的部分和脚本名与参数连接处做文章。

// 参数组装
        if (!empty($vars)) {
            // 添加参数
            if (Config::get('url_common_param')) {
                $vars = urldecode(http_build_query($vars));
                $url .= $suffix . ((Config::get('URL_MODE') == static::MODE_COMPAT) ? '&' : '?') . $vars . $anchor;
            } else {
                $paramType = Config::get('url_param_type');
                foreach ($vars as $var => $val) {
                    if ('' !== trim($val)) {
                        if ($paramType) {
                            $url .= $depr . urlencode($val);
                        } else {
                            $url .= $depr . $var . $depr . urlencode($val);
                        }
                    }
                }
                $url .= $suffix . $anchor;
            }
        } else {
            $url .= $suffix . $anchor;
        }
        // 检测域名
        $domain = self::parseDomain($url, $domain);
        // URL组装
        $path_sep = '/';
        if (Config::get('URL_MODE') == static::MODE_COMPAT) {// 兼容模式判断
            $path_sep = '?' . Config::get('var_pathinfo') . '=';
        }
        $url = $domain . rtrim(self::$root ?: Request::instance()->root(), '/') . $path_sep . ltrim($url, '/');
目录
相关文章
|
PHP UED 开发者
代码审计 | URL解析模式
代码审计 | URL解析模式
|
前端开发 JavaScript 应用服务中间件
VUE3(十八)vue 路由history 模式去掉 URL 中的 # (nginx)
这部分内容比较少。其实更多的是参考一下vue-router4的官方文档就好。 但是,去掉#之后的路由在配合php框架使用的时候可能会有问题,就是这个链接不知道该去后端还是去前端的路由。
1152 0
VUE3(十八)vue 路由history 模式去掉 URL 中的 # (nginx)
|
7月前
|
JavaScript
Vue如何实现hash模式网址(就是那种带#的网址、井号url)
Vue如何实现hash模式网址(就是那种带#的网址、井号url)
|
测试技术 JavaScript 前端开发
|
测试技术
【视频点播】authinfo模式、url模式、AK模式的区别.
目前视频点播播放视频支持三种模式:AK模式,authinfo模式,url模式.不同的模式有不同的意义.需要的参数也不一样.
4649 0
|
PHP 数据安全/隐私保护 开发者
微信开发者模式教程URL和Token(令牌)
使用pcwap程序可以跟微信相同,成为开发者模式,然后通过PCWAP程序后台可以配置关键词回复(文本和站内内容),关注时回复(文本和站内内容),生成自定义菜单(服务号和认证过的订阅号可用); 成为微信开者模式教程如下: 第一步:登录https://mp.
1552 0