一站多城市的网站如何部署【高手请进,官方技术进】

浏览:2317 发布日期:2014/03/11 分类:求助交流 关键字: URL路由 一站网城市 城市类网站
一站点,多城市的网站,
如:http://www.xxx.com/beijing/
如:http://www.xxx.com/beijing/controller/action
一级目录是城市
二级是控制器
三级是对应控制器的操作
有人知道如何解决吗?
如果一级目录不是城市,即直接为正常路由
http://www.xxx.com/controller/action

我自己写了一个代码,可以解决,但是,好像出问题//HOME配制文件
return array(
    // URL路由规则
    'URL_ROUTE_RULES'=> array(
        #城市路由
        '/([a-z]+)/' => function($city){
            $res = M('category')->where(array('type'=>'city','ename'=>$city))->find();
            if($res){//如果城市存在,得新定义PATHINFO
                //城市信息可以写入cookie
                dump($res);
                $_SERVER['PATH_INFO'] = str_replace($city, '', $_SERVER['PATH_INFO']);
            }
            return false;
        },
        
        #单品详情页(因为上面的也能匹配,所以这个路由规则失效)
        'detail/:id\d$'    => 'team/detail',
        
补充:因为老站的基础上,不想使用二级域名做城市,或是有其它的思路的,给个提示!

----------------------------------------------------
第三次补充方案:
貌似官方的办法都会出现问题,下面是我的另一个办法,好像可以实现!
修改入口文件,我的URL模式是3,兼容模式// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);

//目录安全文件不用生成
define('BUILD_DIR_SECURE', false);

// 定义应用目录
define('APP_PATH','./Application/');

//运行目录
define ( 'RUNTIME_PATH', './Runtime/' );

//判断一级目录是否合法并重置PATHINFO
$paths = explode('/',$_GET['s']);
$router = array('Home','Team','Admin','User');
if(!in_array($paths[1],$router)){
    $_GET['s'] = str_replace($paths[1],'',$_GET['s']);    
    $_GET['city'] = $paths[1];
}

// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
最佳答案
评论( 相关
后面还有条评论,点击查看>>