创建多级 Yii 路由

create a multi level Yii route

我正在尝试在 YII1 中使用正则表达式制作 url。 我想为 'pagename/username' 创建 url。

我这样试过:

'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:w+>' => 'site/Profile',

但它不起作用。页面正在自行重新加载

我想在 url 变成 'pagename/username' 时显示新页面。

我是这样做的

'public/<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i>' => 'site/Profile'

看到我必须在开头放一个 "public" 才能让它工作,并删除 i 的 +w ,我的 "site/profile" 只是 $ 的 print_r _REQUEST;

Array ( [pagename] => pagename [i] => username )

编辑:@rob06 的 好多了,记住把它放在数组的第一个 "rules"

'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>',
            ),

应该是:

'<pagename:([A-Za-z0-9-A-zÀ-ú]+)>/<i:\w+>' => 'site/profile',

w+ 将处理仅包含 "w" 个字母的用户名,您需要使用 \w+ 来处理任何单词。

[A-Za-z0-9-A-zÀ-ú]+ 看起来也很可疑 - 您应该避免在 URL 中使用 non-ASCII 个字母,因此 -A-zÀ-ú 应该是不必要的。我建议使用此规则:

'<pagename:[\w-]+>/<i:\w+>' => 'site/profile',