Contao URL: Slash statt .html verwenden

Bei Wordpress und vielen anderen CMS gehört es mittlerweile zum Standard: URLs enden nicht mehr wie früher mit .html, sondern mit einem Slash (/).

Mittlerweile wünschen sich immer mehr Unternehmen, dass die Adresse nicht mehr mit .html endet, da es auf Flyern und Broschüren „doof aussieht“. Glücklicherweise lässt sich die Schreibweise auch in Contao mit wenigen Handgriffen anpassen.

Contao 4.X

Ab Contao 4 lässt sich die URL über die config.yml anpassen. Bis Contao 4.8 befindet sich diese unter app/config/, ab Contao 4.8 nur noch unter config/

Mit den folgenden Zeilen ergänzt du die URL um einen Slash:

contao:
    url_suffix: "/"

Um alte Verlinkungen mit .html und Aufrufe ohne Slash weiterzuleiten, solltest du außerdem Weiterleitungen über die .htaccess erstellen:

# Rewrite all .html --> /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)\.html$ %{ENV:BASE}/$1/ [L,R=301]

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} !/contao [NC]
RewriteCond %{THE_REQUEST} !/_contao [NC]
RewriteRule ^.*[^/]$ /$0/ [L,R=301]

Der obere Block leitet alle .html Aufrufe weiter an die Slash-URL, der untere Block fügt ein Slash hinzu, sollte keiner vorhanden sein. Wichtig ist die Ausnahme für URLs, die contao oder _contao enthalten, denn das Contao Backend lässt sich nur ohne Slash aufrufen.

Die Weiterleitungen sollten nach folgendem Block in der .htaccess eingefügt werden (ca. Zeile 47ff):

# If the requested filename exists, simply serve it.
# We only want to let Apache serve files and not directories.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

Danach muss noch der Cache geleert werden, damit die Änderungen von Contao geladen werden.


Contao 3.5

1. .htaccess anpassen

In der .htaccess findest du etwa in Zeile 252ff folgende Kommentare

 # RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule .* index.php [L]

Diese solltest du „auskommentieren“ und durch diese 5 Zeilen ersetzen, so dass du am Ende dort folgende Zeilen stehen hast:

 RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

2. Contao Einstellungen anpassen

In den Contao Einstellungen findest du im Reiter Frontend-Einstellungen ein Feld für das URL-Suffix. Hier ersetzt du das .html durch einen /

Das wars. Nun sollten sich alle Unterseiten in Contao nach dem Schema
domain.de/leistungen/ bzw.
domain.de/leistungen/design/ aufrufen lassen. Auch wenn am Ende kein Slash steht, wird durch die ersten beiden Zeilen automatisch ein Slash angehängt.

gefunden im Contao Forum.
Dank an Tastaturberuf und bizon

Zuletzt aktualisiert am 30.03.2020 von Dennis Erdmann.

Zurück