it-swarm.com.de

Wie erstelle ich benutzerdefinierte 401, 403 und 500 Fehlerseiten?

Wenn ein 404-Fehler auftritt, kann eine 404.php-Vorlagendatei zum Rendern einer benutzerdefinierten Fehlermeldung verwendet werden. Dies ist im Artikel Vorlagenhierarchie dokumentiert.

Mein Ziel ist es, benutzerdefinierte Fehlerseiten für 401, 403 und 500 Fehler zu erstellen. Ich habe versucht, 401.php-, 403.php- und 500.php-Dateien im Verzeichnis meines Themas zu erstellen, aber das funktioniert nicht.

Wie kann ich benutzerdefinierte 401, 403 und 500 Fehlerseiten in WordPress erstellen?

26
henrywright

Fehlerseiten werden über .HTACCESS bereitgestellt. Wenn Sie Apache verwenden, verwenden Sie die Direktive ErrorDocument und fügen den Status und die URL hinzu.

So würde es in Ihrer .htaccess-Datei aussehen:

ErrorDocument 401 http://yourwebsite.com/error-401
ErrorDocument 403 http://yourwebsite.com/error-403
ErrorDocument 500 http://yourwebsite.com/error-500

Sie können die folgende Funktion verwenden. Dadurch wird dynamisch hinzugefügt, was für Sie in der HTACCESS-Datei benötigt wird, oder Sie können dies manuell tun.

1. Seiten hinzufügen:

Sie müssten dann in Ihr Dashboard gehen und die Seiten wie jede normale Seite erstellen ('Dashboard'> 'Seiten'> 'Neu'). Sie können mit beliebigen Titeln versehen werden. Vergewissern Sie sich jedoch, dass der Slug mit der unten angegebenen Funktion übereinstimmt (Slug: Fehler-401, Fehler-403, Fehler-404, Fehler-500). Sie können auch eine Seitenvorlage verwenden, um das gewünschte Layout und den gewünschten Stil für diese speziellen Seiten zu erstellen. Befolgen Sie dazu die WordPress Codex Anweisungen.

2. Funktion hinzufügen:

// 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 !! HINWEISE ZUR OBEN GENANNTEN FUNKTION

Beim Verschieben Ihrer Website oder Ändern der URL-Struktur

Bei der obigen Funktion ist zu beachten, dass vor dem Schreiben in Ihre HTACCESS-Datei überprüft wird, ob die ErrorDocument-Direktiven bereits vorhanden sind. Die ErrorDocument-Direktiven werden jedoch nicht neu geschrieben, wenn Sie Ihr Blog ändern oder verschieben, um die aktualisierten Seitenpositionen widerzuspiegeln. Sie müssten zuerst die vorhandenen ErrorDocument-Anweisungen in Ihrer HTACCESS-Datei löschen und diese Funktion dann erneut ausführen, um die neuen Anweisungen zu erstellen.

Haken korrigieren, um die Funktion NUR EINMAL auszulösen

Die andere Sache, die zu beachten ist, ist die Verwendung der Aktion init, die jedes Mal ausgeführt wird, wenn Ihre Seiten geladen werden, was sehr unnötig und verschwenderisch ist. Daher würde ich vorschlagen, es einem Plugin hinzuzufügen und den register_activation_hook zu verwenden, damit es nur einmal bei der Aktivierung des Plugins ausgelöst wird

Dateiberechtigungen

Es ist auch unbedingt erforderlich, dass Ihre .htaccess-Datei beschreibbar ist, wenn Sie die oben genannte Funktion verwenden. Vergewissern Sie sich daher, dass sie über die richtigen Dateiberechtigungen verfügt, etwa CHMOD777.

14
Matt Royal