Yii URL格式

當一個Yii應用處理請求URL,首先它解析URL到路由。然後處理請求,路路是用來實例化相應的控制器動作。這個過程被稱爲路由。相反的過程被稱爲URL創建。urlManager應用組件負責路由和URL創建。它提供了兩個方法 -

  • parseRequest() − 解析請求到路由。

  • createUrl() − 從一個給定的路由創建URL。

URL格式

urlManager應用組件支持兩種格式的URL -

  • 默認格式使用查詢參數 r 來表示路由。例如,URL => /index.php?r=news/view&id=5表示路由爲news/view 和查詢參數id的值爲5。

  • 第二種URL格式(PrettyUrl)使用入口腳本加上名額外的路徑。例如,在前面的例子,漂亮的格式將是

    /index.php/news/view/5. 要使用此格式則需要設置URL規則。

爲了使URL格式並隱藏入口腳本名稱,請按照下列步驟 -

步驟1- 以下列方式修改config/web.php文件。

'basic', 'basePath' => dirname(\_\_DIR\_\_), 'bootstrap' => \['log'\], 'components' => \[ 'request' => \[ // !!! insert a secret key in the following (if it is empty) - //this is required by cookie validation 'cookieValidationKey' => 'yiibai.com', \], 'cache' => \[ 'class' => 'yii\\caching\\FileCache', \], 'user' => \[ 'identityClass' => 'app\\models\\User', 'enableAutoLogin' => true, \], 'errorHandler' => \[ 'errorAction' => 'site/error', \], 'mailer' => \[ 'class' => 'yii\\swiftmailer\\Mailer', // send all mails to a file by default. You have to set // 'useFileTransport' to false and configure a transport // for the mailer to send real emails. 'useFileTransport' => true, \], 'log' => \[ 'traceLevel' => YII\_DEBUG ? 3 : 0, 'targets' => \[ \[ 'class' => 'yii\\log\\FileTarget', 'levels' => \['error', 'warning'\], \], \], \], 'urlManager' => \[ 'showScriptName' => false, 'enablePrettyUrl' => true \], 'db' => require(\_\_DIR\_\_ . '/db.php'), \], 'modules' => \[ 'admin' => \[ 'class' => 'app\\modules\\admin\\Hello', \], \], 'params' => $params, \]; if (YII\_ENV\_DEV) { // configuration adjustments for 'dev' environment $config\['bootstrap'\]\[\] = 'debug'; $config\['modules'\]\['debug'\] = \[ 'class' => 'yii\\debug\\Module', \]; $config\['bootstrap'\]\[\] = 'gii'; $config\['modules'\]\['gii'\] = \[ 'class' => 'yii\\gii\\Module', \]; } return $config; ?>

我們剛剛啓用了第二種URL格式(PrettyUrl),並禁用了入口腳本名稱。

第2步 - 現在,如果輸入URL=> http://localhost:8080/site/about,就會看到第二種URL請求結果。
Yii

請注意,URL不再是 http://localhost:8080/index.php?r=site/about.