Die URLs von WordPress Seiten werden über die Permalinks gesteuert. Dort gibt es diverse Möglichkeiten die Permalinkstruktur anzupassen. Doch man findet nicht auf den ersten Blick eine Möglichkeit den URLs ein klassisches .html anzufügen. Eine kurze Erklärung wie Permalinks aufgebaut werden und wie man das .html hinzufügt. Die Tipps hier sind auch für WordPress Versionen 6.x gültig.
Inhaltsverzeichnis:
Einige Beispiele wie die Permalinks aufgebaut werden können
Früher ohne schöne URLs üblich, heute leider noch häufig gesehen. Meist aus Unwissen:
https://www.deine-domain.de/?p=123
Ganz nett, wenn man einen Blog betreibt oder ein zeitliches News-Archiv, aber sonst nicht sinnvoll bezüglich Suchmaschinenoptimierung:
https://www.deine-domain.de/2019/02/25/beispielbeitrag/
Schon besser, aber es fehlt eigentlich die Kategorie oder das Eltern-Element der Seiten in der URL:
https://www.deine-domain.de/beispielbeitrag/
So mache ich es meistens:
https://www.deine-domain.de/%category%/%postname%/
Es wird die Kategorie angezeigt und auch der Post Name. Für 90% aller WP Seiten ist das ideal.
Wie kriegt man nun das .html in die Slugs von WordPress?
Manchmal möchte man die Seiten-URLs mit einem .html versehen, weil zB die Site schon immer .html genutzt hat und Weiterleitungen nicht erwünscht sind. Gerade bei einem Relaunch spart man sich so die Weiterleitung und die bei Google und anderen Suchmaschinen indizierten URLs gehen nicht ins Leere, wenn dann plötzlich die URL-Struktur anders ist. Auf den ersten Blick erschließt sich die Lösung nicht und man beginnt im Netz zu suchen. Dabei ist sie so nahe liegend und leicht. Man fügt einfach den Permalink-Einstellungen in WordPress das .html hinzu.
Zu finden unter Einstellungen->Permalinks:
Das war’s auch schon. Einfach oder?
Wenn das Hinzufügen von .html in WordPress Seiten nicht funktioniert
Dann kannst du über folgendem Code in der functions.php deines Themes arbeiten:
add_action('init', function() { global $wp_rewrite; if (!strpos($wp_rewrite->get_page_permastruct(), '.html')) { $wp_rewrite->page_structure .= '.html'; } });
Hinweis: Nach dem Hinzufügen dieses Codes sollte die Permalink-Struktur aktualisiert werden, indem man unter Einstellungen > Permalinks auf „Änderungen übernehmen“ klickt.
Alternativ kannst du Anpassungen an den URL Slugs deiner WordPress Website auch per Plugin vornehmen. Beispiel: Permalink Manager Lite
Wie man .html-Endungen bei benutzerdefinierten Beitragstypen (Custom Post Types, CPTs) hinzufügt
Wenn du z. B. einen Custom Post Type „Portfolio“ erstellt hast, kannst du ihm .html-Endungen wie folgt zuweisen:
function cpt_html_permalink($post_link, $post) { if ($post->post_type === 'portfolio') { return home_url('/portfolio/' . $post->post_name . '.html'); } return $post_link; } add_filter('post_type_link', 'cpt_html_permalink', 10, 2);
Gehe nach dem Einfügen des Codes im WordPress-Backend zu Einstellungen > Permalinks und klicke auf „Änderungen übernehmen“, damit die neuen Regeln greifen.
FAQs
Funktioniert das auch mit benutzerdefinierten Taxonomien?
Nicht direkt – für Taxonomien wären eigene Rewrite-Regeln nötig.
Was passiert mit bestehenden Permalinks ohne .html?
Die neuen greifen nur für den angegebenen CPT.
Kann ich auch .php, .htm oder andere Endungen verwenden?
Technisch ja, aber aus SEO-Sicht nicht empfehlenswert.
.html-Endung bei Custom Post Types wieder entfernen ohne 404 Fehler
Entferne den Code für die .html Umschreibung in deiner functions.php und richte dann in der .htaccess-Datei in deinem root-Verzeichnis der WP Installation folgende Weiterleitung ein. Anhand des obigen Portfolio-CPT Beispiels:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^portfolio/(.+)\.html$ /portfolio/$1 [R=301,L]
Habe ich noch nie drüber nachgedacht, wieder was gelernt .
Herzlichen dank für deine Hilfe.
Sehr einfach erklärt:)
thanks
david
Danke für den Beitrag, war kurz davor alle alten Links beim Relaunch per 301 weiter zu leiten.
Falls jemand eine Lösung für SEITEN (PAGES) sucht.
Dafür gibt es ein Plugin:
https://wordpress.org/plugins/html-on-pages/
Das ist uralt, funktioniert aber noch.
Das Plugin ist 13 Jahre alt.
Seltsam, dass das noch nicht im WP-Core gelandet ist.
danke für die Infos .. Will hinter den Produkten das .html anhängen .. habe jetzt den Custom Permalinks Plugin heruntergeladen. Das geht da per häkchen aber es ist ein Premium Service..
Hallo, die Anleitung klappt prima bei Beiträgen. Jedoch nicht bei Seiten. Habe ich was übersehen?
Müsste eigentlich auch bei Seiten klappen.
Oh, schön einfach. hatte schon ein anderes cms ausgesucht gehabt.
Vielen Dank für diesen nützlichen Beitrag.
Frohe Ostern.
Danke für deine Hilfe, sehr schönes Tutorial wie man die Dateiendung zur URL hinzufügen kann.
Als ich dein Tutorial gesehen habe, dachte ich mir:
Das hättest du dir auch gleich denken können, da es ja offensichtlich ist.
LG Andi