English 中文(简体)
Yii Tutorial

Yii Useful Resources

Selected Reading

Yii - Rules of URL
  • 时间:2024-11-03

Yii - Rules of URL


Previous Page Next Page  

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.

Modified urlManager Component

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.

Notice HTML Suffix Advertisements