我尝试在yii2中启用漂亮的url,但它根本不起作用。
urlManager配置:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'baseUrl' => '/',
]
public function actionIndex($custom_param)
{
print($custom_param);
}
example.com/mycontroller?custom_param=value
完美无缺。但我需要example.com/mycontroller/value
等网址。
答案 0 :(得分:3)
如果您要将其应用于index
的{{1}}操作,并且mycontroller
为整数,请将其添加到custom_param
的{{1}}部分:
rules
否则,您可以修改模式以满足您的需求。
例如,如果urlManager
是字符串,请将`urlManager' => [
'rules' => [
'mycontroller/<custom_param:\d+>' => 'mycontroller/index',
],
],
更改为custom_param
。
如果要将此规则应用于其他控制器,可以这样执行:
d+
,
在官方文档中阅读更多内容:
答案 1 :(得分:0)
在您的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