今CakePHPでWEBページを作成しています。

そこで問題が2つ出てきました。
以下問題点、
1、404エラーページのカスタマイズが出来ない。
2、GoogleChromeなどでページのソースを表示するとCakePHPのfavicon.icoが表示されてしまう。

「1」について試した事、
cake/libs/view/errors/error404.php
をapp/views/errors/に配置する。
app/error.phpを作成、中身は以下
<?php
class AppError extends ErrorHandler {
function error404($params) {
$this->controller->layout = "error";
parent::error404($params);
}
}
?>
layoutにerror.ctpを配置

適当なURLを打ち込んでも普通にブラウザの404ページが表示されてしまいます。フレームワークが反応していない?

少しでも何か気がついた方は情報を共有ください。
宜しくお願い致します。

参考にしたページ
http://mick.blog16.jp/index.php/main/2008/10/08/cakephp_404_not_found_custom

回答の条件
  • 1人3回まで
  • 登録:2010/05/07 17:28:39
  • 終了:2010/05/09 17:45:34

回答(6件)

id:koki36 No.1

koki36回答回数3ベストアンサー獲得回数02010/05/07 17:32:00

ポイント14pt

しょうがないです

id:pikab1

見捨てないでください。

2010/05/07 18:05:28
id:Committeeman No.2

Committeeman回答回数153ベストアンサー獲得回数192010/05/07 17:44:10

ポイント40pt

テンプレートファイル名はerror404.ctp

スクリプトファイル名はapp_error.phpで中身は下記だけ

class AppError extends ErrorHandler {

$this->controller->layout = 'error';

}

id:pikab1

構成は下記のような感じでしょうか?

app/views/errors/error404.ctp

app/views/layout/error.ctp

app/app_error.php

2010/05/07 18:05:02
id:baron2 No.3

baron回答回数23ベストアンサー獲得回数52010/05/07 23:05:05

ポイント26pt

Apacheの設定でmod_rewriteは有効にしていますか?


mod_rewriteが有効にされている場合、Apacheは

/(cakephpのディレクトリ)/index.php/○○○○

を表示しますが、無効にされている場合は

/(cakephpのディレクトリ)/○○○○

等と存在しないファイルを表示してしまい、ブラウザの404ページが表示されてしまいます。


普通なら.htaccessで設定されていると思うのですが・・・

id:miop No.4

カエル回答回数16ベストアンサー獲得回数02010/05/09 09:56:23

ポイント20pt

テンプレートファイル名はerror404.ctp

スクリプトファイル名はapp_error.phpで中身は下記だけ

class AppError extends ErrorHandler {

$this->controller->layout = 'error';

}

これでOKです

id:miop No.5

カエル回答回数16ベストアンサー獲得回数02010/05/09 09:57:22

テンプレートファイル名はerror404.ctp

スクリプトファイル名はapp_error.phpで中身は下記だけ

class AppError extends ErrorHandler {

$this->controller->layout = 'error';

}

これでOKです

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 カエル 16 5 0 2010-05-09 09:58:39
  • id:pikab1
    error.ctpの内容がdefault.ctpの内容のままだと問題なくCakeの404ページが表示されるのですが、
    下記のような辺りをコメントアウトするとブラウザ側の404ページが表示されてしまうのです。

    Apacheのアクセスログを見てる限りではどっちの場合も404が返っていています。

    <head>
    <?php echo $html->charset(); ?>
    <title>
    <?php __('CakePHP: the rapid development php framework:'); ?>
    <?php echo $title_for_layout; ?>
    </title>
    <?php
    echo $html->meta('icon');

    //echo $html->css('cake.generic');

    //echo $scripts_for_layout;
    ?>
    </head>

    ●下記、Apacheのアクセスログ

    【CakePHPの404が表示される】
    xxx.xxx.xxx.xxx - - [07/May/2010:16:47:33 +0900] "GET /適当なURL HTTP/1.1" 404 574 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1064 Safari/532.5"
    xxx.xxx.xxx.xxx - - [07/May/2010:16:47:34 +0900] "GET /css/cake.generic.css HTTP/1.1" 304 - "http://www.sample.com/適当なURL" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1064 Safari/532.5"

    【ブラウザ側の404が表示される】
    xxx.xxx.xxx.xxx - - [07/May/2010:16:48:14 +0900] "GET /適当なURL HTTP/1.1" 404 504 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1064 Safari/532.5"

  • id:pikab1
    とりあえず、1に関しては解決致しました。
    ただ、2はまだ未解決です。
  • id:rouge_2008
    ソース表示だけデフォルトのアイコンなのですか?
    「webroot」の「favicon.ico」はオリジナルのファイルに変更済みなのですよね?
    ブラウザのキャッシュを削除してみてください。
  • id:pikab1
    おそらくrouge_2008様ので解決しそうです。
    回答頂いたみなさんにポイントを配分したいので、
    出来れば普通に「回答」という形で投稿して頂きたいです。
  • id:rouge_2008
    pikab1さん、ありがとうございます。
    キャッシュの削除だけですし、大変有難いのですが今回は辞退させていただきます。(^-^;
  • id:rouge_2008
    4番目と5番目の回答者miopが、2番目の回答をコピーして回答を行った件で右のリンクから通報しました。
    このユーザーは、他の質問でも同様のことを繰り返しているようです。
    もし良かったら、質問者さんご本人からも通報してみてください。
  • id:pikab1
    なるほど、私だけなら別に構いませんが他でも繰り返しているとなると悪質ですね。
    念のため通報致しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません