如何创建自定义的401、403和500错误页面?

时间:2014-05-01 作者:henrywright

当遇到404错误时,404。php模板文件可用于呈现自定义错误消息。这记录在Template Hierarchy 文章

我的目标是为401、403和500个错误创建自定义错误页面。我试过创建401。php,403。php和500。php文件在我的主题目录中,但这不起作用。

如何在WordPress中创建自定义401、403和500错误页?

1 个回复
最合适的回答,由SO网友:Matt Royal 整理而成

错误页面通过提供。HTACCESS,如果您使用的是Apache,那么您将使用ErrorDocument 指令,并向其添加状态和URL。

所以在你的身体里看起来是这样的。htaccess文件:

ErrorDocument 401 http://yourwebsite.com/error-401
ErrorDocument 403 http://yourwebsite.com/error-403
ErrorDocument 500 http://yourwebsite.com/error-500
您可以使用下面的函数。这将为您动态地向HTACCESS文件添加所需的内容,或者您可以手动添加。

1. Add Pages:

然后,您需要进入仪表板,像任何普通页面一样创建页面(“仪表板”>“页面”>“新建”)。它们可以根据您的意愿命名,只需确保slug与下面的函数相同(slug:error-401、error-403、error-404、error-500)。还可以使用页面模板为这些特定页面创建所需的任何布局和样式。跟随WordPress Codex 相关说明。

2. Add Function:

// Create Custom Error Pages in WordPress using HTACCESS
function royal_custom_error_pages() {

    // Get HTACCESS path & dynamic website url
    $htaccess_file = \'.htaccess\';
    $website_url = get_bloginfo(\'url\').\'/\';

    // Check & prevent writing error pages more than once
    $check_file = file_get_contents($htaccess_file);
    $this_string = \'# BEGIN WordPress Error Pages\';

    if( strpos( $check_file, $this_string ) === false) {

    // Setup Error page locations dynamically
    $error_pages .= PHP_EOL. PHP_EOL . \'# BEGIN WordPress Error Pages\'. PHP_EOL. PHP_EOL;
    $error_pages .= \'ErrorDocument 401 \'.$website_url.\'error-401\'.PHP_EOL;
    $error_pages .= \'ErrorDocument 403 \'.$website_url.\'error-403\'.PHP_EOL;
    $error_pages .= \'ErrorDocument 404 \'.$website_url.\'error-404\'.PHP_EOL;
    $error_pages .= \'ErrorDocument 500 \'.$website_url.\'error-500\'.PHP_EOL;
    $error_pages .= PHP_EOL. \'# END WordPress Error Pages\'. PHP_EOL;

    // Write the error page locations to HTACCESS
    $htaccess = fopen( $htaccess_file, \'a+\');
    fwrite( $htaccess, $error_pages );
    fclose($htaccess);

    }
}

add_action(\'init\',\'royal_custom_error_pages\'); // This will run the function everytime, not ideal!

// register_activation_hook( __FILE__, \'royal_custom_error_pages\' ); // Using a plugin, runs only once!

NB!! NOTES ON THE ABOVE FUNCTION

When moving your website or changing URL structure

上述函数需要记住的是,虽然在将错误文档指令写入HTACCESS文件之前,它会检查错误文档指令是否已经存在,但如果您更改或移动博客以反映更新的页面位置,它不会重写错误文档指令。您需要先删除HTACCESS文件中现有的ErrorDocument指令,然后重新运行此函数来创建新指令。

Correct Hook to fire the function ONLY ONCE

另一个需要注意的是此函数,使用init 操作将在每次加载页面时运行,这是非常不必要和浪费的,因此我建议将其添加到插件并使用register_activation_hook 相反,它只在插件激活时触发一次

File Permissions

此外,您的。使用上述函数时,htaccess是可写的,因此请确保它具有正确的文件权限,如CHMOD777。

结束

相关推荐

无法打开Advanced-cache.php,这将破坏媒体库

在我的WordPress安装中,它是3.8版本,所有插件都已更新,它使用的是Magic Fields 2和Hypercache等插件。我无法在帖子中插入图像,因为当我上传时,它会给我一个错误:上载时出错。请稍后再试。帖子“插入媒体”中的媒体库窗口显示为空白,尽管我知道那里有图像,可以通过侧边栏中的查看它们。当我尝试插入带有魔术字段的图像时,当我单击“插入帖子”时,窗口是空白的,它不会插入图像。在wp配置中。php,我已将调试设置为true:define(\'WP\\u DEBUG\',true);我在禁用