给自己的Blog加上自定义错误页面

闲来无事,研究了一下 Sablog 模板和 .htaccess,顺便给自己的网站加上了自定义错误页面。参见以下链接:

http://www.snailium.net/error-400.html
http://www.snailium.net/error-401.html
http://www.snailium.net/error-403.html
http://www.snailium.net/error-404.html
http://www.snailium.net/error-500.html


自定义错误页面方法如下:

应用系统:Sablog 1.6
修改文件:2个 + .htaccess
添加文件:1个模板 + 若干个错误图片

步骤:

第一步:修改 /index.php

找到:

[code lang="php" title="/index.php"]
require_once PrintEot('index');
[/code]

在上方添加:

[code lang="php" title="/index.php"]
// 自定义错误
elseif ($_GET['action'] == 'error') {
    $error_code = $_GET['code'];
    $pagefile = 'error';
}
[/code]

第二步:修改模板文件夹下的 index.php

找到:

[code lang="html" title="index.php"]
<head>
[/code]

在下方添加:

[code lang="html" title="index.php"]
<!–
EOT;
if ($pagefile == 'error') {
print <<<EOT
—>
<base href="$options[url]" />
<!–
EOT;
}
print <<<EOT
—>
[/code]

第三步:在模板文件夹下建立 error.php

内容如下:

[code lang="php" title="error.php"]
<!–<?php
if(!defined('SABLOG_ROOT')) {
exit('Access Denied');
}
print <<<EOT
–>
<div class="content-top">
<!–
EOT;
switch ($error_code)
{
case '400':
print '–> 错误 400:不正确的请求<!–';
break;
case '401':
print '–> 错误 401:需要身份验证<!–';
break;
case '403':
print '–> 错误 403:禁止访问<!–';
break;
case '404':
print '–> 错误 404:文件不存在<!–';
break;
case '500':
print '–> 错误 500:服务器内部错误<!–';
break;
default:
print '–> 未知错误<!–';
break;
}
print <<<EOT
–>
</div>
<div id="article-box">
<div class="article-title" style="text-align: center;">
<!–
EOT;
switch ($error_code)
{
case '401':
print '–> <img src="/images/error/401.jpg" /><!–';
break;
case '403':
print '–> <img src="/images/error/403.jpg" /><!–';
break;
case '404':
print '–> <img src="/images/error/404.gif" /><!–';
break;
default:
print '–> <img src="/images/error/general.gif" /><!–';
break;
}
print <<<EOT
–>
</div>
</div>
<div class="article-content" style="text-align: center;">
<p><a href="$options[url]">返回首页</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript: history.go(-1);">返回上页</a></p>
</div>
<!–
EOT;
?>
[/code]

第四步:上传相应的错误提示图片到 /images/error/

第五步:修改 .htaccess

先确认 Rewrite rule 生效,然后在文件尾部加入下面几行。

[code lang="plain" title=".htaccess"]
# 自定义错误
RewriteRule ^error-([0-9]+)\.html$ index.php?action=error&code=$1
ErrorDocument 400 /error-400.html
ErrorDocument 401 /error-401.html
ErrorDocument 403 /error-403.html
ErrorDocument 404 /error-404.html
ErrorDocument 500 /error-500.html
[/code]

完成!

已有 4 条评论
  1. 雪海潆 雪海潆

    神奇,这个有什么用呢?

  2. snailium snailium

    [quote=雪海潆]神奇,这个有什么用呢?[/quote]
    跟整个网站统一的风格,比原来丑丑的404错误好多了。另外错误图片还可以个性化。

  3. 雪海潆 雪海潆

    这样啊~有趣

  4. You actually explained that very well!

添加新评论