我需要创建一个类似 website / user / username 的网址,其中 username 来自数据库。我尝试通过在我的操作函数中放置一个$ user变量作为参数来获取它,结果看起来像 website / action?user = username 。但它看起来有点简洁和丑陋。我怎样才能得到理想的结果?
答案 0 :(得分:1)
首先,您需要在config / web.php中配置网址规则。
[
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
"user/<username:\w+>"=> "controller/action"
],
],
],
并在规则数组中添加url匹配条件
"user/<username:\w+>"=> "controller/action"
创建。在web文件夹中具有以下url条件的htaccess文件
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
使用Url辅助类或Html类生成URL,如下所示
echo Url::to(['controller/action', 'username' => 'jack']);
Or
echo Html::a('Profile', ['controller/action', 'username' => 'jack'], ['class' => 'profile-link'])
注意: - 控制器名称,操作名称和用户名应与Url条件匹配。我们在rules数组中定义。