Yii2デフォルトのルーティング
作成したばかりのYiiプロジェクトではUrlManagerがコメントアウトされているので、こんな感じのURLになる。
http://example.com/index.php?r=
.htaccessとUrlManagerを使ってきれいにする
URLの”/index.php”無しで index.php にアクセスできるようにapacheのrewriteモジュールを設定する。
web/.htaccessに次のように記述する。
RewriteEngineon
#Ifadirectoryorafileexists,useitdirectly
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
#Otherwiseforwardittoindex.php
RewriteRule.index.php
次にUrlManagerコンポーネントを有効にする。
config/web.phpに設定を追加する。
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => array(
'<controller:[\w\-]>/<id:\d+>' => '<controller>/index',
'<controller:[\w\-]>/<action:[\w\-]>/<id:\d+>' => '<controller>/<action>',
'<controller:[\w\-]>/<action:[\w\-]>' => '<controller>/<action>',
),
],
これで、↓この形のURLでアクセスできるようになる。
http://example.com/
ruleについての注意:
“[\w\-]” はアルファベットとハイフンを表してる。数字もを使いたければ\dを追加する。
“id:\d” はidパラメタは整数であることを表している。英数字が使いたければ[a-zA-Z0-9]+に変更する。