漂亮 URL 与 yii2

Pretty URL with yii2

我试图在 yii2 中启用 pretty url,但它无法正常工作。

url管理员配置:

'urlManager' => [
    'enablePrettyUrl' => true,
     'showScriptName' => false,
     'baseUrl' => '/',
]

public function actionIndex($custom_param)
{
    print($custom_param);
}

example.com/mycontroller?custom_param=value 完美运行。但是我需要 example.com/mycontroller/value.

这样的 URL

如果您想将此应用于 mycontrollerindex 操作,并且如果 custom_param 是整数,请将此添加到 [=15= 的 rules 部分]:

`urlManager' => [
    'rules' => [
        'mycontroller/<custom_param:\d+>' => 'mycontroller/index',
    ],
],

否则您可以修改模式以满足您的需要。

例如,如果 custom_param 是字符串,则将 d+ 更改为 w+

如果你想将此规则应用到其他控制器,你可以这样做:

'<controller:(mycontroller|anothercontroller)>/<custom_param:\d+> => '<controller>/index',

阅读官方文档:

在您的 web.php 文件中,组件下方使用此代码:

'urlManager' => [
        'class' => 'yii\web\UrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'rules' => array(
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
    ],

在您的网络文件夹中创建一个 .htaccess 文件并粘贴它:

RewriteEngine on # If a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # therwise forward it to index.phpRewriteRule . index.php