• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cakephp views/pagesの中にイメージファイルを置きたい)

cakephp views/pagesにイメージファイルを置きたい

このQ&Aのポイント
  • cakephpのviews/pagesディレクトリにイメージファイルを置く方法について教えてください
  • サイトで共通に使用するイメージファイルはwebroot/imgディレクトリに入れていますが、1つのページでしか使わない細々としたファイルをviews/pages以下の各ディレクトリに入れたいです
  • しかし、ブラウザで表示する際にpages_controllerと解釈されてしまい、正しく表示されません。views/pages以下にイメージファイルを置くことはできないのでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.1

>種類がtext/htmlになってしまい これは、違うと思う。単純にアクセス先が強制的にリライトされているからだろう。 CakePHPでは、.htaccessで強制的にindex.phpにリライトしている。CakePHP内にある.htaccessと、「app」内にある.htaccessでそのサーバー設定を行っている。だから、これらを書き換えれば可能だ。例えば、「app」内にある.htaccessの、 RewriteRule (.*) webroot/$1 [L] この部分のルール設定を変更する。例えば、(.*)を(.php)とかに変更すればviews内にある.php拡張子以外のファイルにアクセスできるはず。 ただし、この場合、ビューの.ctpファイル内に用意する<img>タグのリンクは、 <img src="/hoge/app/views/pages/sample.jpg"> こんな感じでアドレスを指定することになる。つまり、デザイン段階で、ビューファイルのある階層の外に「views」フォルダをおき、その中に更に「pages」フォルダを用意して、そこにファイルを配置してデザインを作っていることになる。本当にこんなわけわからないフォルダ構成でデザインをしているのか?と疑問に思う。これは、ありえないだろう。たぶん、どこかで何か錯覚をしているような気がする。 「webroot」の「img」を使えば、(.htaccessの変更などしないでデフォルトの設定のままで) <img src="sample.jpg"> たったこれだけですむ。例えば、デザイナーが、ビューファイルの階層に「images」フォルダをおき、その中にイメージを用意して<img src="./images/sample.jpg">とリンクを張っていたとするなら、それは「webroot」の「img」内に「images」フォルダを作成し、そこにsample.jpgをおくことでリンクできる。要するに、ファイルの場所を機械的に移動するだけで済む。したがって、webroot下に配置したほうが圧倒的にデザインは楽になるはずなんだが。それではまずいんだろうか?

seiroku55
質問者

お礼

ありがとうございます。 お礼が遅れてすみませんでした。 はじめの段階で画像のおき方を指定しておかなかったのは問題でした・・・ コンテンツ数が多いので、デザイナーから渡されたディレクトリ構造で相対パスでできないかな~と思ったんですが、後々にも問題になりそうなので、webroot/imgに移動させようと思います。 すっきりしました。 ありがとうございました。