想要對Url進行最佳化,全部變為路徑模式
如:http://xxx.com/topic/index?id=1&type=1
轉變為:http://xxx.com/topic/index/id/1/type/1
可以通過配置rules:
'//id//type/'=>'/'
但是如果我傳得參數不一樣,比如再加一些參數,或者參數名非type和id,就無法匹配這個rule,難道要針對每一中參數都配置一個rule嗎?
想通過正則把參數寫為或的形式,但是沒能成功,不知道這個正則的寫法和規則是怎麼樣的,有沒有官方文檔說明啊?
還有一種方式是重載urlManager類中的方法,感覺稍微複雜了一點,還沒嘗試,請大家指點迷津,給個思路?謝謝了!
回複內容:
想要對Url進行最佳化,全部變為路徑模式
如:http://xxx.com/topic/index?id=1&type=1
轉變為:http://xxx.com/topic/index/id/1/type/1
可以通過配置rules:
'//id//type/'=>'/'
但是如果我傳得參數不一樣,比如再加一些參數,或者參數名非type和id,就無法匹配這個rule,難道要針對每一中參數都配置一個rule嗎?
想通過正則把參數寫為或的形式,但是沒能成功,不知道這個正則的寫法和規則是怎麼樣的,有沒有官方文檔說明啊?
還有一種方式是重載urlManager類中的方法,感覺稍微複雜了一點,還沒嘗試,請大家指點迷津,給個思路?謝謝了!
直接把 UrlManager中這個參數配置成true
/** * 路由的路徑化 * * @var bool */ public $enablePrettyUrl = true;
第一:在設定檔加上 urlManager項,看代碼:
'urlManager'=>[ 'class' => 'yii\web\UrlManager', 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules'=>[ '//' =>'/', '/' => '/read', 's' => '/list', ], ],
第二,在index.php同級目錄下建立.htaccess檔案,把下面的代碼貼上:
Options +FollowSymLinksIndexIgnore */*RewriteEngine on# if a directory or a file exists, use it directlyRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d# otherwise forward it to index.phpRewriteRule . index.php
原文地址:http://www.yiichina.com/tutorial/622
或者參考這個:http://www.cnblogs.com/dcb3688/p/4607968.html