如何在Yii2中创建正确的URL地址

时间:2017-03-14 16:10:59

标签: php url yii2

我需要创建一个类似 website / user / username 的网址,其中 username 来自数据库。我尝试通过在我的操作函数中放置一个$ user变量作为参数来获取它,结果看起来像 website / action?user = username 。但它看起来有点简洁和丑陋。我怎样才能得到理想的结果?

1 个答案:

答案 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数组中定义。