Yii2: URLをきれいにする

Yii2デフォルトのルーティング

作成したばかりのYiiプロジェクトではUrlManagerがコメントアウトされているので、こんな感じのURLになる。
http://example.com/index.php?r=/&id=

.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//?id=

ruleについての注意:
“[\w\-]” はアルファベットとハイフンを表してる。数字もを使いたければ\dを追加する。
“id:\d” はidパラメタは整数であることを表している。英数字が使いたければ[a-zA-Z0-9]+に変更する。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です