2019/11/20 21:17 JST

Geeklog Japan Forums

静的ページのゲストアクセスを禁止した場合の挙動について


状態: オフライン

sasabo-

Forum User
Active Member
登録日: 03/31/08
投稿数: 53
Geeklog2.1から静的ページでゲストアクセスの閲覧権限を外した場合の挙動(メッセージ)が変わっているようですが、これは仕様なんでしょうか。

2.1 → 404エラー(以下略)

2.0 →このページにアクセスできません。ページを移動や削除しているか、アクセス権がありません。


状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5932
場所:Tokyo
これは仕様変更でした。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5932
場所:Tokyo
ページが無い場合、404.phpを実行させる、というのが、ページが無い場合のデザインを統一できて良い、ということで、仕様が変わりました。
あわせて404.phpは変更され、カスタム関数が用意されました。
これで、カスタム関数を登録しておくと、ページが無い場合のデザインを簡単にカスタマイズ(Geeklogをアップデートしても継承)できるようになりました。

カスタム関数のプログラムソース:custom_handle404.php をlib-custom.phpに読み込む。
静的ページ 404 を作成。
404.phpで静的ページ404を表示するようカスタム関数を以下のように追加。
.htaccess にはErrorDocument 404 /404.phpを追加。

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
}
 


くわしくは
http://wiki.geeklog.jp/index.php?title=404エラーのページをカスタマイズする

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5932
場所:Tokyo
存在しない静的ページを表示したとき、静的ページ404を表示します。
https://www.geeklog.jp/staticpages/index.php/x


時刻はすべて JST , 現在の時刻は 09:17 PM

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