如何在 Yii2 urlManager 中为默认页面创建干净的 url
How to create clean url for Default page in Yii2 urlManager
我的索引规则如下:
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
],
它有效,但在分页中,第一页是 example/page/1
,我将规则更改如下:
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
'defaults' => ['page' => 1],
],
现在首页变成了example.com/page
。
如何写规则,让分页第一页显示像example.com
?
根据你的问题和你的评论,我建议你另外添加一个空白 url 模式的规则,即 url 仅包含域,指向你的 defaultRoute
具有默认的 $page
参数值。
'rules' => [
[
'pattern' => '',
'route' => 'site/index',
'defaults' => ['page' => 1],
],
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
],
],
然后,在您的控制器操作中,您可以测试此 url 规则是否正常工作,如下所示:
public function actionIndex($page)
{
echo '<pre>';
echo 'site / index / $page ' . print_r($page, true);
echo '</pre>';
exit;
}
另请注意,您可以像这样在控制器操作的方法声明中设置默认值:
public function actionIndex($page = 1)
{
echo '<pre>';
echo 'site / index / $page ' . print_r($page, true);
echo '</pre>';
exit;
}
这样可以简化您的配置,如下所示:
'rules' => [
[
'pattern' => '',
'route' => 'site/index',
],
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
],
],
我的索引规则如下:
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
],
它有效,但在分页中,第一页是 example/page/1
,我将规则更改如下:
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
'defaults' => ['page' => 1],
],
现在首页变成了example.com/page
。
如何写规则,让分页第一页显示像example.com
?
根据你的问题和你的评论,我建议你另外添加一个空白 url 模式的规则,即 url 仅包含域,指向你的 defaultRoute
具有默认的 $page
参数值。
'rules' => [
[
'pattern' => '',
'route' => 'site/index',
'defaults' => ['page' => 1],
],
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
],
],
然后,在您的控制器操作中,您可以测试此 url 规则是否正常工作,如下所示:
public function actionIndex($page)
{
echo '<pre>';
echo 'site / index / $page ' . print_r($page, true);
echo '</pre>';
exit;
}
另请注意,您可以像这样在控制器操作的方法声明中设置默认值:
public function actionIndex($page = 1)
{
echo '<pre>';
echo 'site / index / $page ' . print_r($page, true);
echo '</pre>';
exit;
}
这样可以简化您的配置,如下所示:
'rules' => [
[
'pattern' => '',
'route' => 'site/index',
],
[
'pattern' => 'page/<page:\d+>',
'route' => 'site/index',
],
],