Yii2 之 UrlManager 實踐 (一)
阿新 • • 發佈:2017-07-13
com logs web cor php domain true highlight turn
1. enablePrettyUrl
yii2默認不支持類似 http://<domain>/site/error 的url格式,需要在config.php中啟用 enablePrettyUrl 屬性
[ //others ‘components‘ => [ ‘urlManager‘ => [ ‘enablePrettyUrl‘ => true, ], ], ];
2. 配置suffix 實現偽靜態 *.html
需要在 config.php中配置 urlManager 即可
[ ‘components‘ => [ ‘urlManager‘ => [ ‘enablePrettyUrl‘ => true, ‘suffix‘ => ‘.html‘, ], ], ];
3. 同時支持 http://<domain>/site/error.html 以及 http://<domain>/site/error 的url格式
* 沒有找到僅僅配置config便可以實現的方式,這裏重寫UrlManager。只重寫了一句代碼,僅貼部分展示代碼
namespace common\yiiext\web; use yii; use yii\web\UrlManager as BaseUrlManager; class UrlManager extends BaseUrlManager { public function parseRequest($request) { if ($this->enablePrettyUrl) { //other code ... if ($suffix !== ‘‘ && $pathInfo !== ‘‘) { $n = strlen($this->suffix); if (substr_compare($pathInfo, $this->suffix, -$n, $n) === 0) { $pathInfo = substr($pathInfo, 0, -$n); if ($pathInfo === ‘‘) { // suffix alone is not allowed return false; } } else { // 就這一句區別用父類 // suffix doesn‘t match return [$pathInfo, []]; } } //other code .. } }
* 然後再次配置config.php
[ ‘components‘ => [ ‘urlManager‘ => [ ‘class‘ => ‘common\yiiext\web\UrlManager‘, ‘enablePrettyUrl‘ => true, ‘suffix‘ => ‘.html‘, ], ], ];
Yii2 之 UrlManager 實踐 (一)