闲来无事,研究了一下 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

找到:

PHP代码
  1. require_once PrintEot('index');

在上方添加:

PHP代码
  1. // 自定义错误
  2. elseif ($_GET['action'] == 'error') {
  3.     $error_code = $_GET['code'];
  4.     $pagefile = 'error';
  5. }

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

找到:

XML/HTML代码
  1. <head>

在下方添加:

XML/HTML代码
  1. <!--
  2. EOT;
  3. if ($pagefile == 'error') {
  4.   print <<<EOT
  5. -->
  6. <base href="$options[url]" />
  7. <!--
  8. EOT;
  9. }
  10. print <<<EOT
  11. -->

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

内容如下:

PHP代码
  1. <!--<?php
  2. if(!defined('SABLOG_ROOT')) {
  3.     exit('Access Denied');
  4. }
  5. print <<<EOT
  6. -->
  7. <div class="content-top">
  8. <!--
  9. EOT;
  10. switch ($error_code)
  11. {
  12.     case '400':
  13.       print '-->  错误 400:不正确的请求<!--';
  14.       break;
  15.     case '401':
  16.       print '-->  错误 401:需要身份验证<!--';
  17.       break;
  18.     case '403':
  19.       print '-->  错误 403:禁止访问<!--';
  20.       break;
  21.     case '404':
  22.       print '-->  错误 404:文件不存在<!--';
  23.       break;
  24.     case '500':
  25.       print '-->  错误 500:服务器内部错误<!--';
  26.       break;
  27.     default:
  28.       print '-->  未知错误<!--';
  29.       break;
  30. }
  31. print <<<EOT
  32. -->
  33. </div>
  34. <div id="article-box">
  35.   <div class="article-title" style="text-align: center;">
  36. <!--
  37. EOT;
  38. switch ($error_code)
  39. {
  40.     case '401':
  41.       print '-->    <img src="/images/error/401.jpg" /><!--';
  42.       break;
  43.     case '403':
  44.       print '-->    <img src="/images/error/403.jpg" /><!--';
  45.       break;
  46.     case '404':
  47.       print '-->    <img src="/images/error/404.gif" /><!--';
  48.       break;
  49.     default:
  50.       print '-->    <img src="/images/error/general.gif" /><!--';
  51.       break;
  52. }
  53. print <<<EOT
  54. -->
  55.   </div>
  56. </div>
  57. <div class="article-content" style="text-align: center;">
  58.   <p><a href="$options[url]">返回首页</a>&nbsp;&nbsp;&nbsp;&nbsp;
  59.   <a href="javascript: history.go(-1);">返回上页</a></p>
  60. </div>
  61. <!--
  62. EOT;
  63. ?>

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

第五步:修改 .htaccess

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

.htaccess
  1. # 自定义错误
  2. RewriteRule ^error-([0-9]+)\.html$ index.php?action=error&code=$1
  3. ErrorDocument 400 /error-400.html
  4. ErrorDocument 401 /error-401.html
  5. ErrorDocument 403 /error-403.html
  6. ErrorDocument 404 /error-404.html
  7. ErrorDocument 500 /error-500.html

完成!