Home > CakePHP | PHP > CakePHP URLのカスタマイズ

CakePHP URLのカスタマイズ

  • Posted by: エガシラリュウジ
  • 2007年2月12日 13:11
  • CakePHP | PHP

CakePHPでは、webrootディレクトリ内に設置したファイルは、通常の静的ファイルとしてアクセスできるんですが、グローバルテンプーレートとして、統一されたヘッダーや、フッターを利用したい場合があります。

その場合、pagesディレクトリを利用すると効果的なんですが、URLの見た目がイマイチです。
http://test.test/pages/company/index 等

そこで、以下のようにルールを決めましょう。かなりすっきりするハズ。

・拡張子 .html のURLへのアクセスは全てpagesディレクトリを参照する
・逆に、拡張子 .html なしURLへのアクセスはプログラムとみなし、独自controllerへアクセスする
・ファイル名を省略した場合は、index.htmlを補完する(独自controllerを利用した場合の自動index補完は無効となります)

具体的には、webroot配下の .htaccessファイルに以下を追記します。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ $1/index.html [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*).html$ index.php?url=/pages/$1 [QSA,L]

これで、以下のようなURLでアクセス可能となります。
http://test.test/company/
http://test.test/company/agreement.html 等



ただし、この場合、scaffoldを利用した際に、不具合が生じますので、
RewriteRule ^(.*)/$ $1/index.html [QSA,L] の上に、「scaffold対象モデルの場合には、index.htmlを補完しない」という記述が必要です。

RewriteCond %{REQUEST_URI} !model名/
RewriteRule ^(.*)/$ $1/index.html [QSA,L]

Comments:0

コメントフォーム

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://blog.non-style.com/mt/mt-tb.cgi/28
Listed below are links to weblogs that reference
CakePHP URLのカスタマイズ from Webプログラマの苦悩

Home > CakePHP | PHP > CakePHP URLのカスタマイズ

Links
Search
Feeds
Tag Cloud

Return to page top