我试图在YII1中使用正则表达式创建一个网址。 我想为“页面名称/用户名”创建网址。
我尝试过这样:
'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:w+>' => 'site/Profile',
,但是它不起作用。页面只是重新加载自身
当URL变为“ pagename / username”时,我想显示新页面。
答案 0 :(得分:0)
我可以这样工作
'public/<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i>' => 'site/Profile'
看到我必须在开始时放置一个“ public”才能使其起作用,并删除i的+ w,我的“站点/配置文件”只是$ _REQUEST的print_r;
Array ( [pagename] => pagename [i] => username )
编辑:@ rob06的answer更好,只记得将其放在数组“规则”的开头
'rules' => array(
'<pagename:[\w-]+>/<i:\w+>' => 'site/profile',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
答案 1 :(得分:0)
应该是:
'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:\w+>' => 'site/profile',
w+
将处理仅包含“ w”字母的句柄用户名,您需要使用\w+
处理任何单词。
另外[A-Za-z0-9-A-zÀ-ú]+
看起来可疑-您应避免在URL中使用非ASCII字母,因此-A-zÀ-ú
应该是不必要的。我建议使用此规则:
'<pagename:[\w-]+>/<i:\w+>' => 'site/profile',