开启二级域名之后多分组跳转问题,域名绑定分组跳转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方法 仅供参考/**
跨域调用 比如现在是admin.baidu.com 使用U('/Home/aa/bb')之后,直接跳到home.baidu.com/aa/bb.html
* 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;
}
分页调用 还和以前一样
AD:真正免费,域名+虚机+企业邮箱=0元

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.
