2019/03/24 05:37 JST

Geeklog Japan Forums

404 Errorページについて

ページナビゲーション


状態: オフライン

yuru

Forum User
Active Member
登録日: 04/25/07
投稿数: 206
存在しないURLを入力したばあいに表示されるページをカスタマイズするには、どうしたらいいでしょうか?

このサイトのように


404 Error
https://www.geeklog.jp/**/はどこにも見つかりませんでした。

指定したファイルは存在しません。メインページをチェックしたり、検索ページで探してみてください。

のうように、表示できるとよいのですが・・・

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5895
場所:Tokyo
okay
ぜひこのWikiご覧ください。
http://wiki.geeklog.jp/index.php?title=404エラーのページをカスタマイズする

CUSTOM_handle404()を設置して、
http://www.ossj.jp/a
このようにカスタマイズも簡単ですよ Smile

状態: オフライン

yuru

Forum User
Active Member
登録日: 04/25/07
投稿数: 206
Wikiページに
lib-custom.phpに、COM_handle404()のソースを元に、CUSTOM_handle404()を設置します。
とありましたが、COM_handle404()がどこにあるのか、わかりませんでした。

お手数おかけして、申し訳ありまん・・・ Cry

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5895
場所:Tokyo
hopeful
Quote by: yuru

Wikiページに
lib-custom.phpに、COM_handle404()のソースを元に、CUSTOM_handle404()を設置します。
とありましたが、COM_handle404()がどこにあるのか、わかりませんでした。

お手数おかけして、申し訳ありまん・・・ Cry



あ、説明不足でした。
COM_ とあることから、lib-common.phpです。

COM_ .... lib-common.php
その他の接頭子は、system 以下のプログラムです。

SEC_ ... lib-security.php
DB_... lib-database.php
という具合です。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5895
場所:Tokyo
ちなみに、OSS Japanでは以下のようにしています。

1.追加:
custom_handle404.php

PHP Formatted Code
<?php

if (strpos(strtolower($_SERVER['PHP_SELF']), 'custom_handle404.php') !== false) {
    die('This file can not be used on its own!');
}

function CUSTOM_handle404($alternate_url = '')
{
    global $_CONF, $_USER, $LANG_404;


    // send 404 in any case
    header('HTTP/1.1 404 Not Found');
    header('Status: 404 Not Found');

    $display .= COM_startBlock($LANG_404[1]);
    if (isset($_SERVER['SCRIPT_URI'])) {
        $url = strip_tags($_SERVER['SCRIPT_URI']);
    } else {
        $request = $_SERVER['REQUEST_URI'];
        $url = 'http://' . $_SERVER['HTTP_HOST'] . strip_tags($request);
    }

    // Add log stuff
    if (isset($_USER['uid'])) {
        $byuser = $_USER['uid'] . '@' . $_SERVER['REMOTE_ADDR'];
    } else {
        $byuser = 'anon@' . $_SERVER['REMOTE_ADDR'];
    }
    $refurl = $_SERVER['HTTP_REFERER'];
    $remoteaddress = $_SERVER['REMOTE_ADDR'];
    $timestamp = @strftime( '%c' );
    $logentry = "404 Error generated by $byuser for url: $url - Referring url: $refurl";
    $logfile = $_CONF['path_log'] . '404.log';
    if (!$file = fopen($logfile, 'a')) {

    } else {
        fputs( $file, "$timestamp - $logentry
"
);
    }

    $display .= CUSTOM_getStaticpage('404');

    $display .= sprintf($LANG_404[2], $url);
    if ($alternate_url != '') {
        $display .= sprintf($LANG_404[4], $alternate_url);
    } else {
        $display .= $LANG_404[3];
    }
    $display .= COM_endBlock();
    // $display = COM_createHTMLDocument($display, array('pagetitle' => $LANG_404[1]));
    $display = COM_createHTMLDocument($display, array('what' => 'none', 'pagetitle' => $LANG_404[1], 'rightblock' => false));
    COM_output($display);    
    exit; // Do not want to go any further
}
 


2.編集:lib-custom.php 追加
/* 404 */
require_once( 'custom/custom_handle404.php' );

3.静的ページ ID: 404 を作成

状態: オフライン

yuru

Forum User
Active Member
登録日: 04/25/07
投稿数: 206
Geeklog本体のバージョンは2.0.0 ですが、lib-common.php に「COM_handle404()」が見当たりませんでした。

教えていただいたものを、そのままlib-custom.php に追加してみたいと思います。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5895
場所:Tokyo
であれば2.1.0 から追加されたものだと思います。
404.phpを以下のようにご編集ください。


PHP Formatted Code
<?php

/* Reminder: always indent with 4 spaces (no tabs). */
// +---------------------------------------------------------------------------+
// | Geeklog 1.6                                                               |
// +---------------------------------------------------------------------------+
// | 404.php                                                                   |
// |                                                                           |
// | Geeklog "404 Not Found" page                                              |
// +---------------------------------------------------------------------------+
// | Copyright (C) 2000-2009 by the following authors:                         |
// |                                                                           |
// | Authors: Tony Bibbs        - tony AT tonybibbs DOT com                    |
// |          Jason Whittenburg - jwhitten AT securitygeeks DOT com            |
// |          Dirk Haun         - dirk AT haun-online DOT de                   |
// +---------------------------------------------------------------------------+
// |                                                                           |
// | This program is free software; you can redistribute it and/or             |
// | modify it under the terms of the GNU General Public License               |
// | as published by the Free Software Foundation; either version 2            |
// | of the License, or (at your option) any later version.                    |
// |                                                                           |
// | This program is distributed in the hope that it will be useful,           |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of            |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
// | GNU General Public License for more details.                              |
// |                                                                           |
// | You should have received a copy of the GNU General Public License         |
// | along with this program; if not, write to the Free Software Foundation,   |
// | Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.           |
// |                                                                           |
// +---------------------------------------------------------------------------+

require_once 'lib-common.php';

CUSTOM_handle404();

?>



状態: オフライン

みるく

Forum User
Active Member
登録日: 06/08/07
投稿数: 87
横からすみません。
私も404ページを作成したかったのですが、lib-common.php に「COM_handle404()」が見当たらなかったので、
下記の事を試しました。

1.上記のように記述したcustom_handle404.phpを新規作成して
  system/custom/ におく。

2.system/lib-custom.php に下記を追記する。
/* 404 */
require_once( 'custom/custom_handle404.php' );

3.静的ページ ID: 404 を作成。

4.404.phpを上記のように修正。

5.公開領域に
  ErrorDocument 404 /404.php
  と記述した .htaccess をおく。

これを何度か試してしてみたのですが、「404」としか表示されませんでした。
(カスタマイズされたページが表示されません><Wink

原因として思い当たるのは4くらいなのですが、
静的ページの内容やページタイトルはどのように記述すればいいのでしょうか?
設定はPHPを実行するにチェックでいいんですよね?

他にカスタマイズされたページが表示されない原因がありましたら教えていただけますでしょうか?
よろしくお願いします。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5895
場所:Tokyo
ファイルがなければ404のあじけないメッセージではなく、写真やキャラクターをデザインした内容の静的ページ404を表示する方法を紹介していました。
静的ページには、表示したいファイルがありませんよ~というデザインになっていればOKです。

たとえばこのサイトでは、
https://www.geeklog.jp/staticpages/index.php/404

という静的ページ「404」を作成しています。

ファイルがなければ、これを表示します。

https://www.geeklog.jp/a

こんなぐあいに・・・

custom関数は、
https://github.com/ivywe/geeklog-ivywe/blob/master/system/custom/custom_handle404.php

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5895
場所:Tokyo
静的ページの内容やページタイトルはどのように記述すればいいのでしょうか?
設定はPHPを実行するにチェックでいいんですよね?


静的ページを、どういうモードで作成しても構いません。
ただ、静的ページ404を表示したとき、きちんと表示されるページであることは確認してください。

通常、PHPを実行する モードにはしません。
ふつうに、画像やテキストなどを配置するだけです。
PHPを実行する モードでページを作成してもかまいませんが、そうしなければならない理由はまったくありません。

$display .= CUSTOM_getStaticpage('404'Wink;

この関数で、静的ページ404を読み込んでいるわけですが、タイトルは取り込まず、本体コンテンツだけ取り込んでいます。
そのためタイトルはどうセットしても無視されますのでなんでもよいです。

ページナビゲーション

時刻はすべて JST , 現在の時刻は 05:37 AM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  ゲストユーザ投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック