首先,路由是负责将用户请求映射到特定的 MVC 控制器操作.v9默认的路由文件是 caches\configs\route.php ,默认路由如下:
default是默认路由,在没有任何匹配的情况下,将映射到content模块index文件的init方法.
我们再来看下路由是在哪里被处理的.打开\phpcms\libs\classes\param.class.php ,找到下面一句代码:
这里读取路由配置,根据常量 SITE_URL 查找是否存在路由配置,如果存在就加载,否则就加载默认的default配置.
SITE_URL这个常量是做什么的呢?看看他的定义:
也就是我们访问的域名,比如 pic.weikejianghu.com 或者 baike.weikejianghu.com 又或者 bbs.weikejianghu.com,不带http.
那么,比如我们有一个域名 bbs.weikejianghu.com ,他的动态访问地址是 m=bbs&c=index&a=init .那么我们在做过域名绑定到v9后,访问 bbs.weikejianghu.com 就能定位到 m=bbs&c=index&a=init ,这时候就要依靠url路由.因此定义如下路由:
一个完整的url路由功能就实现了.利用此功能,可以实现泛解析到不同模块,不同栏目等等.
比如给你的v9黄页模块做一个 yp.phpcms.cn 路由到 m=yp&c=index&a=init .
这样每一个模块都是一个拥有二级域名的子站了,而同时利用v9的数据表分离功能,可以实现一些较大的应用.
希望大家有好东西一起分享,诚招女性网站(prbr2百度收录2k以上)友链.谢谢.
结尾国际惯例,回复可见.
分享一个网站的泛解析处理方法:
路由如下:
*/</p>
<p> switch($GLOBALS['domain']){
case 'www':
$array = array('default'=>array('m'=>'content','c'=>'index','a'=>'init'));
break;</p>
<p> default:
$array = array(SITE_URL=>domain( $GLOBALS['domain'] ) );
break;</p>
<p> }</p>
<p> return $array;
</div>
其中函数 domain定义如下:
}</p>
<p>
function parse_domain($array){</p>
<p> switch($array['type']){
case '3833'://手术项目,也即栏目
$catid = $array['keyid'];
$id = $_GET['id'];
$GET = $id ? array('id'=>$id,'catid'=>$catid) : array('catid'=>$catid);
$newarr = array('m'=>'content','c'=>'index','a'=>$id ? 'show': 'lists','data'=>array('GET'=>$GET));
$GLOBALS['catid'] = $catid;
break;</p>
<p> case '3834'://城市地区
$newarr = array('m'=>'content','c'=>'city','a'=>'init','data'=>array('GET'=>array('areaid'=>$array['keyid'])));
$GLOBALS['cityid'] = $array['keyid'];
break;</p>
<p>
case '3835'://整形医院
$newarr = array('m'=>'yp','c'=>'com_index','a'=>'init','data'=>array('GET'=>array('userid'=>$array['keyid'])));
$GLOBALS['hospitalid'] = $array['keyid'];
break;
}
return $newarr;</p>
<p> }
</div>
结合了联动菜单的地区,权当是抛砖引玉了.
尤其注意
这里的定义方式,数据的格式一定要正确.
</div>