例如
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一点个人拙见.希望有更好的方法分享
最佳答案