dポイントプレゼントキャンペーン実施中!

サイトで共通に使用するイメージファイルは、webroot/imgの中に入れていますが、
1つのページでしか使わない細々としたファイルはviews/pages/以下の各ディレクトリに入れたいたいんです。
(デザイナーからあがってくる構造がそうなっていることが多いので)

しかしながら、ブラウザで表示する際にpages_controllerとかで勝手に解釈されるのか、種類がtext/htmlになってしまい、正しく表示してくれません。

やはり/views/pages/以下にイメージファイルを置くことは無理なんでしょうか。

ご存じのかたいらっしゃいましたら、よろしくお願いいたします。

A 回答 (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下に配置したほうが圧倒的にデザインは楽になるはずなんだが。それではまずいんだろうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
お礼が遅れてすみませんでした。
はじめの段階で画像のおき方を指定しておかなかったのは問題でした・・・

コンテンツ数が多いので、デザイナーから渡されたディレクトリ構造で相対パスでできないかな~と思ったんですが、後々にも問題になりそうなので、webroot/imgに移動させようと思います。
すっきりしました。
ありがとうございました。

お礼日時:2009/04/07 15:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!