1、效果图
2、修改tp异常页面的模板文件( /thinkphp/tpl/think_exception.tpl ),将文件中的内容全部替换成下面的内容然后保存即可(若发生报错,请注意语言包问题)
1 <?php 2 $cdnurl = function_exists('config') ? config('view_replace_str.__CDN__') : ''; 3 $publicurl = function_exists('config') ? config('view_replace_str.__PUBLIC__') : '/'; 4 $debug = function_exists('config') ? config('app_debug') : false; 5 6 $lang = [ 7 'An error occurred' => '发生错误', 8 'Home' => '返回主页', 9 'Feedback' => '反馈错误', 10 'The page you are looking for is temporarily unavailable' => '你所浏览的页面暂时无法访问', 11 'You can return to the previous page and try again' => '你可以返回上一页重试,或直接向我们反馈错误报告' 12 ]; 13 14 $langSet = ''; 15 16 if (isset($_GET['lang'])) { 17 $langSet = strtolower($_GET['lang']); 18 } elseif (isset($_COOKIE['think_var'])) { 19 $langSet = strtolower($_COOKIE['think_var']); 20 } elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { 21 preg_match('/^([a-zd-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches); 22 $langSet = strtolower($matches[1]); 23 } 24 $langSet = $langSet && in_array($langSet, ['zh-cn', 'en']) ? $langSet : 'zh-cn'; 25 $langSet == 'en' && $lang = array_combine(array_keys($lang), array_keys($lang)); 26 27 ?> 28 <!DOCTYPE html> 29 <html> 30 <head> 31 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 32 <title><?=$lang['An error occurred']?></title> 33 <meta name="robots" content="noindex,nofollow" /> 34 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> 35 <link rel="shortcut icon" href="<?php echo $cdnurl;?>/assets/img/favicon.ico" /> 36 <style> 37 * {-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;} 38 html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,caption,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video {margin:0;padding:0;border:0;outline:0;vertical-align:baseline;background:transparent;} 39 article,aside,details,figcaption,figure,footer,header,hgroup,nav,section {display:block;} 40 html {font-size:16px;line-height:24px;100%;height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;overflow-y:scroll;overflow-x:hidden;} 41 img {vertical-align:middle;max-100%;height:auto;border:0;-ms-interpolation-mode:bicubic;} 42 body {min-height:100%;background:#edf1f4;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",微软雅黑,Arial,sans-serif;} 43 .clearfix {clear:both;zoom:1;} 44 .clearfix:before,.clearfix:after {content:" 020";display:block;height:0;visibility:hidden;} 45 .clearfix:after {clear:both;} 46 body.error-page-wrapper,.error-page-wrapper.preview {background-position:center center;background-repeat:no-repeat;background-size:cover;position:relative;} 47 .error-page-wrapper .content-container {border-radius:2px;text-align:center;box-shadow:1px 1px 1px rgba(99,99,99,0.1);padding:50px;background-color:#fff;100%;max-560px;position:absolute;left:50%;top:50%;margin-top:-220px;margin-left:-280px;} 48 .error-page-wrapper .content-container.in {left:0px;opacity:1;} 49 .error-page-wrapper .head-line {transition:color .2s linear;font-size:40px;line-height:60px;letter-spacing:-1px;margin-bottom:20px;color:#777;} 50 .error-page-wrapper .subheader {transition:color .2s linear;font-size:32px;line-height:46px;color:#494949;} 51 .error-page-wrapper .hr {height:1px;background-color:#eee;80%;max-350px;margin:25px auto;} 52 .error-page-wrapper .context {transition:color .2s linear;font-size:16px;line-height:27px;color:#aaa;} 53 .error-page-wrapper .context p {margin:0;} 54 .error-page-wrapper .context p:nth-child(n+2) {margin-top:16px;} 55 .error-page-wrapper .buttons-container {margin-top:35px;overflow:hidden;} 56 .error-page-wrapper .buttons-container a {transition:text-indent .2s ease-out,color .2s linear,background-color .2s linear;text-indent:0px;font-size:14px;text-transform:uppercase;text-decoration:none;color:#fff;background-color:#2ecc71;border-radius:99px;padding:8px 0 8px;text-align:center;display:inline-block;overflow:hidden;position:relative;45%;} 57 .error-page-wrapper .buttons-container a:hover {text-indent:15px;} 58 .error-page-wrapper .buttons-container a:nth-child(1) {float:left;} 59 .error-page-wrapper .buttons-container a:nth-child(2) {float:right;} 60 @media screen and (max-580px) { 61 .error-page-wrapper {padding:30px 5%;} 62 .error-page-wrapper .content-container {padding:37px;position:static;left:0;margin-top:0;margin-left:0;} 63 .error-page-wrapper .head-line {font-size:36px;} 64 .error-page-wrapper .subheader {font-size:27px;line-height:37px;} 65 .error-page-wrapper .hr {margin:30px auto;215px;} 66 } 67 @media screen and (max-450px) { 68 .error-page-wrapper {padding:30px;} 69 .error-page-wrapper .head-line {font-size:32px;} 70 .error-page-wrapper .hr {margin:25px auto;180px;} 71 .error-page-wrapper .context {font-size:15px;line-height:22px;} 72 .error-page-wrapper .context p:nth-child(n+2) {margin-top:10px;} 73 .error-page-wrapper .buttons-container {margin-top:29px;} 74 .error-page-wrapper .buttons-container a {float:none !important;65%;margin:0 auto;font-size:13px;padding:9px 0;} 75 .error-page-wrapper .buttons-container a:nth-child(2) {margin-top:12px;} 76 } 77 </style> 78 </head> 79 <body class="error-page-wrapper"> 80 <div class="content-container"> 81 <div class="head-line"> 82 <img src="<?=$cdnurl?>/assets/img/error.svg" alt="" width="120"/> 83 </div> 84 <div class="subheader"> 85 <?=$debug?$message:$lang['The page you are looking for is temporarily unavailable']?> 86 </div> 87 <div class="hr"></div> 88 <div class="context"> 89 90 <p> 91 <?=$lang['You can return to the previous page and try again']?> 92 </p> 93 94 </div> 95 <div class="buttons-container"> 96 <a href="<?=$publicurl?>"><?=$lang['Home']?></a> 97 <a href="<?=$publicurl?>"><?=$lang['Feedback']?></a> 98 </div> 99 </div> 100 </body> 101 </html>
over!over!over!