Yii – Rules of URL
”;
A URL rule is an instance if yiiwebUrlRule. 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 yiiwebUrlManager::$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.
”;