urlManager的几个问题

1        'urlSuffix'=>'.html',

        'appendParams'=>false,

        'showScriptName'=>false,

        'urlFormat'=>'path',

	'rules'=>array(





	),

没有写规则的情况下,'urlSuffix'=>'.html'起作用吗?

2            我想让module controller action用_连起来,有没有通配的规则匹配?例如portal/default/index 变成portal_default_index

3

发现 'urlFormat'=>'path',在'rules'内无效,必须写在rules外。这样的话别的路径都影响了。

4  ?r=portal/default/list&categoryId=1&page=2 伪装为 list_1_2.html

?r=portal/default/list&categoryId=1 伪装为 list_1.html

怎样让两个都可以伪装?我设置了只有一个起作用

'list_<categoryId:\d+>'=>array('portal/default/list', 'urlSuffix'=>'.html'),

'list_<categoryId:\d+>_<page:\d+>'=>array('portal/default/list', 'urlSuffix'=>'.html'),

  1. 会起作用。你试试就知道了。如果你不喜欢后缀,把它设成空就可以了。

  2. '<module:[^/]+><controller:[^/]+><action:[^/_]+>' => '<module>/<controller>/<action>'

3.  urlFormat是CUrlManager的属性,所以必须写在rules外面。的确,这是影响所有路径的。

  1. 你的rules是怎样的?

4的rules规则是

Quote

      'showScriptName'=>false,

        'urlFormat'=>'path',

		&#039;rules&#039;=&gt;array(

        'list_<categoryId:\d+>'=>array('portal/default/list', 'urlSuffix'=>'.html'),

        'list_<categoryId:\d+>_<page:\d+>'=>array('portal/default/list', 'urlSuffix'=>'.html',),

	),</div></div>

route "<module>/<controller>/<action>" 中的 URL 格式 "<module:[^/]+><controller:[^/]+><action:[^/_]+>" 不是有效的 regular exp​ression.

对了,需要把[^/]+改成[^/]+(这个主要使用来匹配每一段的,你可以考虑用其它正规表达式)。

  1. 把两条规则互换一下次序。

研究url重写问题 留个足迹 :lol: