子域名下的U方法的解决思路

浏览:1152 发布日期:2013/10/09 分类:技术分享 关键字: 子域名 U方法
TP的U方法很好用,把所有的网址都统一起来处理了,不过当TP开启子域名时候U方法生成的网址就有问题了
例如
www.yunduweixin.com/Member 对立子域名为 member.yunduweixin.com
在 在域名 www.yunduweixin.com/Member 下使用U方法生成操作 U('/Member/Index/index') 是可行的,
但 在子域名 member.yunduweixin.com 使用 U('/Member/Index/index') 就会出错,正确的应该是 U('/Index/index') 但这样又不能在第一种方法下使用.

什么时候会遇见这样的情况呢.就我个人的情况,是在开发和部署阶段,虽然可以通过批量替换U方法解决但 项目文件实在很多的时候 就容易替换错了.

我想到一个折中的解决办法.
在common.php中加一个 UU方法例如function UU($url='',$vars='',$suffix=true,$redirect=false,$domain=false){
  $host = $_SERVER['SERVER_NAME'];
  $sub = C('APP_SUB_DOMAIN_RULES');
  $host_arr = explode(".", $host);
  
  foreach ($sub as $key => $value) {
    if (strtolower($key) == strtolower($host_arr[0])) {
      $url =  eregi_replace($key.'/', "",$url);
      continue;
    }
  }
  return U($url,$vars,$suffix,$redirect,$domain);
}
其原理就是通过 UU 对URL重新整理一遍,将当前的域名以.分割 再去和子域名对比,如果存在就替换.这样全站都统一使用 U('/组/操作/方法')这样的形式来生成URL


一点个人拙见.希望有更好的方法分享
最佳答案
评论() 相关
后面还有条评论,点击查看>>