关于urlManager的两个小问题

第一个:

在使用urlManager的时候如果末尾加上*,那么GET参数会变成/key1/value1/key2/value2这种形式,但是如果value1是url的时候或者含有符号/的时候就会出错,无法正确识别参数。

第二个:

做网站SEO还是比较重要的,虽然百度一再重申不会歧视动态地址,但是事实我们都知道,而Yii只提供了一种方式将GET参数静态化,也就是使用/来分割。这对于搜索引擎来说并不理想,也许还不如动态参数。因为排序翻页等等一多就会导致目录无限加深,而且还容易是使蜘蛛掉进黑洞,造成蜘蛛对页面惩罚。

看过urlManager,分隔符是写死的,实在不想修改yii源码,所以就一直这么将就着,我觉得GET参数静态化的分隔符至少可以自定义,比如使用-之类的。

难道没有人需要这样的配置么?

yii中的核心组件都是可以被复写的 你并不需要修改源码

扩展一个你自己的urlManager即可,根据你的需要修改某些实现 然后在main.php中修改配置:





 array(

   

    'urlManager' => array(

        'class'=>'application.components.KUrlManager',

        'urlFormat' => 'path',

        //'caseSensitive'=>false,

        'showScriptName' => false, //隐藏index.php  要配合  服务器重写 将所有请求导航到 index.php上

        'rules' => array(

            //'<controller:\w+>/<id:\d+>' => '<controller>/views',

            //'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',

            //'<controller:\w+>/<action:\w+>' => '<controller>/<action>',

            //'<module:\w+>/<controller:\w+>/<action:\w+>'=>'<module>/<controller>/<action>',

            '<module:sns>/<uid:\d+>'=>'<module>/default/index',

        ),

    ),



覆盖完后 配置 components => array(…