A URL rule is an instance if yii\web\UrlRule. The urlManager components uses the URL rules declared in its rules property when the pretty URL format is enabled.
To parse a request, the URL manager obtains the rules in the order they are declared and looks for the first rule.
Step 1 − Modify the urlManager component in the config/web.php file.
'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true, 'rules' => [ 'about' => 'site/about', ] ],
Step 2 − Go to your web browser at http://localhost:8080/about, you will see the about page.
A URL rule can be associated with query parameters in this pattern −
<ParamName:RegExp>, where −
- ParamName − The parameter name
- RegExp − An optional regular expression used to match parameter values
Suppose, we have declared the following URL rules −
[ 'articles/<year:\d{4}>/<category>' => 'article/index', 'articles' => 'article/index', 'article/<id:\d+>' => 'article/view', ]
When the rules are used for parsing −
- /index.php/articles is parsed into the article/index
- /index.php/articles/2014/php is parsed into the article/index
- /index.php/article/100 is parsed into the article/view
- /index.php/articles/php is parsed into articles/php
When the rules are used for creating URLs −
- Url::to([‘article/index’]) creates /index.php/articles
- Url::to([‘article/index’, ‘year’ => 2014, ‘category’ => ‘php’]) creates /index.php/articles/2014/php
- Url::to([‘article/view’, ‘id’ => 100]) creates /index.php/article/100
- Url::to([‘article/view’, ‘id’ => 100, ‘source’ => ‘ad’]) creates /index.php/article/100?source=ad
- Url::to([‘article/index’, ‘category’ => ‘php’]) creates /index.php/article/index?category=php
To add a suffix to the URL, you should configure the yii\web\UrlManager::$suffix property.
Step 3 − Modify the urlComponent in the config/web.php file.
'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'suffix' => '.html' ],
Step 4 − Type the address http://localhost:8080/site/contact.html in the address bar of the web browser and you will see the following on your screen. Notice the html suffix.