搜尋
首頁php教程php手册二级域名开启之后U方法跳转问题,下一页支持路由问题

开启二级域名之后多分组跳转问题,域名绑定分组跳转url改写,重写U函数在原函数判断子域名开启之前加如下代码,比如现在是admin.baidu.com 使用U('/Home/aa/bb')之后,直接跳到home.baidu.com/aa/bb.html
最近做项目遇到tp独立分组二级域名问题,解决之后跨域session解决,但是U方法从跳转的时候不能调到对应的分组的域名,和小伙伴改造一次U方法。并且今天顺手改了U开启路由之后下一页不支持路由的问题,技术有限,发现有问题请指正

跨域 在U方法第166行解析子域名之前直接加代码判断    /*<br>     * 开启子域名的时候修复url<br>     * 例如 www.a.com有分组Home,让home.a.com访问的时候U生成的地址home替换www,去掉Home/<br>     * modify author :赵利刚 王荣<br>     * modify time:2014.2.26<br>     */<br>     if(C('APP_SUB_DOMAIN_DEPLOY') == 1){<br>         foreach (C('APP_SUB_DOMAIN_RULES') as $key => $zlg) {            <br>             if(false !== strstr($url,$zlg[0])){                <br>                 $domain = $_SERVER['HTTP_HOST']; //获取主机域名<br>                 $domain = $key.strstr($domain,'.'); //替换当前域名为分组域名<br>                 $url = str_replace($zlg[0],'',$url); //去掉多余pathinfo里面的分组<br>             }            <br>         }<br>     }tp开启路由之后下一页路由失效问题 分页类URL组装 大约262行URL拼接完成之后增加代码            //dump($url);<br>             /*<br>             *tp开启路由之后下一页路由失效问题 分页类URL组装<br>             * modify author :赵利刚<br>             * modify time:2014.3.5<br>             */<br>             //如果开启路由<br>             if(C('URL_ROUTER_ON')){                <br>                 foreach (C('URL_ROUTE_RULES') as $zhaolg => $zlig){//遍历路由                        <br>                     if(strstr('/'.GROUP_NAME.$url,$zlig)){//从网址中找路由规则<br>                         $lg = strstr($zhaolg,'/:');//分析规则 带参数?<br>                         if($lg){//如果规则带参数                            <br>                             $tempzlg = str_replace('/:','',$lg);//取参数<br>                             //dump($tempzlg);  <br>                             if($tempzlg){<br>                                 if(C('APP_SUB_DOMAIN_DEPLOY')){<br>                                     $zlgurl = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url); //url替换为路由规则 <br>                                 }else{<br>                                     $zlgurl = str_replace($zlig,$zhaolg,$url); //url替换为路由规则 <br>                                 }                                <br>                                 //注 /s/:c/c/4/p/__PAGE__<br>                                 //dump($zlgurl);<br>                                 $url = str_replace($lg.'/'.$tempzlg,'',$zlgurl);//url替换路由规则参数<br>                                                             <br>                             }    <br>                         }else{//分析规则  不带参数<br>                             if(C('APP_SUB_DOMAIN_DEPLOY')){<br>                                 $url = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url);//url替换为路由规则<br>                             }else{<br>                                 $url = str_replace($zlig,$zhaolg,$url);//url替换为路由规则 <br>                             }                    <br> <br>                         }<br>                     }<br>                 }<br>             }改造之后我的U方法 仅供参考/**
 * URL组装 支持不同URL模式
 * @param string $url URL表达式,格式:'[分组/模块/操作#锚点@域名]?参数1=值1&参数2=值2...'
 * @param string|array $vars 传入的参数,支持数组和字符串
 * @param string $suffix 伪静态后缀,默认为true表示获取配置值
 * @param boolean $redirect 是否跳转,如果设置为true则表示跳转到该URL地址
 * @param boolean $domain 是否显示域名
 * @return string
 */
function U($url='',$vars='',$suffix=true,$redirect=false,$domain=false) {
    // 解析URL
    $info   =  parse_url($url);
    $url    =  !empty($info['path'])?$info['path']:ACTION_NAME;
    
    
    if(isset($info['fragment'])) { // 解析锚点
        $anchor =   $info['fragment'];
        if(false !== strpos($anchor,'?')) { // 解析参数
            list($anchor,$info['query']) = explode('?',$anchor,2);
        }        
        if(false !== strpos($anchor,'@')) { // 解析域名
            list($anchor,$host)    =   explode('@',$anchor, 2);
        }
    }elseif(false !== strpos($url,'@')) { // 解析域名
        list($url,$host)    =   explode('@',$info['path'], 2);
    }
    
    /*<br>     * 开启子域名的时候修复url<br>     * 例如 www.a.com有分组Home,让home.a.com访问的时候U生成的地址home替换www,去掉Home/<br>     * modify author :赵利刚 王荣<br>     * modify time:2014.2.26<br>     */<br>     if(C('APP_SUB_DOMAIN_DEPLOY') == 1){<br>         foreach (C('APP_SUB_DOMAIN_RULES') as $key => $zlg) {            <br>             if(false !== strstr($url,$zlg[0])){                <br>                 $domain = $_SERVER['HTTP_HOST']; //获取主机域名<br>                 $domain = $key.strstr($domain,'.'); //替换当前域名为分组域名<br>                 $url = str_replace($zlg[0],'',$url); //去掉多余pathinfo里面的分组<br>             }            <br>         }<br>     }
    
    
    if(isset($host)) {
       // $domain = $host.(strpos($host,'.')?'':strstr($_SERVER['HTTP_HOST'],'.'));
        
    }elseif($domain===true){
        $domain = $_SERVER['HTTP_HOST'];
        if(C('APP_SUB_DOMAIN_DEPLOY') ) { // 开启子域名部署
            $domain = $domain=='localhost'?'localhost':'www'.strstr($_SERVER['HTTP_HOST'],'.');
            // '子域名'=>array('项目[/分组]');
            foreach (C('APP_SUB_DOMAIN_RULES') as $key => $rule) {
                if(false === strpos($key,'*') && 0=== strpos($url,$rule[0])) {
                    $domain = $key.strstr($domain,'.'); // 生成对应子域名
                    $url    =  substr_replace($url,'',0,strlen($rule[0]));
                    break;
                }
            }
        }
    }

    // 解析参数
    if(is_string($vars)) { // aaa=1&bbb=2 转换成数组
        parse_str($vars,$vars);
    }elseif(!is_array($vars)){
        $vars = array();
    }
    if(isset($info['query'])) { // 解析地址里面参数 合并到vars
        parse_str($info['query'],$params);
        $vars = array_merge($params,$vars);
    }
    
    // URL组装
    $depr = C('URL_PATHINFO_DEPR');
    if($url) {
        if(0=== strpos($url,'/')) {// 定义路由
            $route      =   true;
            $url        =   substr($url,1);
            if('/' != $depr) {
                $url    =   str_replace('/',$depr,$url);
            }
        }else{
            if('/' != $depr) { // 安全替换
                $url    =   str_replace('/',$depr,$url);
            }
            // 解析分组、模块和操作
            $url        =   trim($url,$depr);
            $path       =   explode($depr,$url);
            $var        =   array();
            $var[C('VAR_ACTION')]       =   !empty($path)?array_pop($path):ACTION_NAME;
            $var[C('VAR_MODULE')]       =   !empty($path)?array_pop($path):MODULE_NAME;
            if($maps = C('URL_ACTION_MAP')) {
                if(isset($maps[strtolower($var[C('VAR_MODULE')])])) {
                    $maps    =   $maps[strtolower($var[C('VAR_MODULE')])];
                    if($action = array_search(strtolower($var[C('VAR_ACTION')]),$maps)){
                        $var[C('VAR_ACTION')] = $action;
                    }
                }
            }
            if($maps = C('URL_MODULE_MAP')) {
                if($module = array_search(strtolower($var[C('VAR_MODULE')]),$maps)){
                    $var[C('VAR_MODULE')] = $module;
                }
            }            
            if(C('URL_CASE_INSENSITIVE')) {
                $var[C('VAR_MODULE')]   =   parse_name($var[C('VAR_MODULE')]);
            }
            if(!C('APP_SUB_DOMAIN_DEPLOY') && C('APP_GROUP_LIST')) {
                if(!empty($path)) {
                    $group                  =   array_pop($path);
                    $var[C('VAR_GROUP')]    =   $group;
                }else{
                    if(GROUP_NAME != C('DEFAULT_GROUP')) {
                        $var[C('VAR_GROUP')]=   GROUP_NAME;
                    }
                }
                if(C('URL_CASE_INSENSITIVE') && isset($var[C('VAR_GROUP')])) {
                    $var[C('VAR_GROUP')]    =  strtolower($var[C('VAR_GROUP')]);
                }
            }
        }
    }

    if(C('URL_MODEL') == 0) { // 普通模式URL转换
        $url        =   __APP__.'?'.http_build_query(array_reverse($var));
        if(!empty($vars)) {
            $vars   =   urldecode(http_build_query($vars));
            $url   .=   '&'.$vars;
        }
    }else{ // PATHINFO模式或者兼容URL模式
        if(isset($route)) {
            $url    =   __APP__.'/'.rtrim($url,$depr);
        }else{
            $url    =   __APP__.'/'.implode($depr,array_reverse($var));
        }
        if(!empty($vars)) { // 添加参数
            foreach ($vars as $var => $val){
                if('' !== trim($val))   $url .= $depr . $var . $depr . urlencode($val);
            } 
            
            
            //dump($url);<br>             /*<br>             *tp开启路由之后下一页路由失效问题 分页类URL组装<br>             * modify author :赵利刚<br>             * modify time:2014.3.5<br>             */<br>             //如果开启路由<br>             if(C('URL_ROUTER_ON')){                <br>                 foreach (C('URL_ROUTE_RULES') as $zhaolg => $zlig){//遍历路由                        <br>                     if(strstr('/'.GROUP_NAME.$url,$zlig)){//从网址中找路由规则<br>                         $lg = strstr($zhaolg,'/:');//分析规则 带参数?<br>                         if($lg){//如果规则带参数                            <br>                             $tempzlg = str_replace('/:','',$lg);//取参数<br>                             //dump($tempzlg);  <br>                             if($tempzlg){<br>                                 if(C('APP_SUB_DOMAIN_DEPLOY')){<br>                                     $zlgurl = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url); //url替换为路由规则 <br>                                 }else{<br>                                     $zlgurl = str_replace($zlig,$zhaolg,$url); //url替换为路由规则 <br>                                 }                                <br>                                 //注 /s/:c/c/4/p/__PAGE__<br>                                 //dump($zlgurl);<br>                                 $url = str_replace($lg.'/'.$tempzlg,'',$zlgurl);//url替换路由规则参数<br>                                                             <br>                             }    <br>                         }else{//分析规则  不带参数<br>                             if(C('APP_SUB_DOMAIN_DEPLOY')){<br>                                 $url = str_replace($zlig,$zhaolg,'/'.GROUP_NAME.$url);//url替换为路由规则<br>                             }else{<br>                                 $url = str_replace($zlig,$zhaolg,$url);//url替换为路由规则 <br>                             }                    <br> <br>                         }<br>                     }<br>                 }<br>             }
                         
        }
        if($suffix) {
            $suffix   =  $suffix===true?C('URL_HTML_SUFFIX'):$suffix;
            if($pos = strpos($suffix, '|')){
                $suffix = substr($suffix, 0, $pos);
            }
            if($suffix && '/' != substr($url,-1)){
                $url  .=  '.'.ltrim($suffix,'.');
            }
        }
    }
    if(isset($anchor)){
        $url  .= '#'.$anchor;
    }
    if($domain) {
        $url   =  (is_ssl()?'https://':'http://').$domain.$url;
    }
    if($redirect) // 直接跳转URL
        redirect($url);
    else
        return $url;
}
跨域调用 比如现在是admin.baidu.com 使用U('/Home/aa/bb')之后,直接跳到home.baidu.com/aa/bb.html
分页调用 还和以前一样

AD:真正免费,域名+虚机+企业邮箱=0元

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),