Endung ".html" von Unterseiten sauber entfernen

  • Hallo, ich habe momentan 2 Unterseiten: "...de.datenschutz.html" & "...de.impressum.html". Allerdings schaffe ich es nicht das .html zu entfernen, so dass in der Adressleiste nur steht "...de.datenschutz" & "...de.impressum".

    Wenn ich die im Ordner httpdocs die Endung .html von datenschutz.html & impressum.html entferne, und dies in der index.html dann entsprechend verlinke, führt dies in der Seitenansicht zu 404-Fehlern o.ä.

    Kann mir bitte jemand sagen, wie ich es richtig mache? Danke.

  • Du musst 2 neue Ordner anlegen mit den gewünschten Namen ("de.datenschutz" und "de.impressum") und den eigentlichen Inhalt dann dort jeweils als index.html hinterlegen.

    Ohne Dateiendung weiß der Webserver nicht, was er ausgeben soll (HTML? PHP? Download?)

  • Das sagt ChatGPT

    Mit Apache mod_rewrite kannst du die Dateiendung .html aus URLs entfernen, sodass beispielsweise:

    • https://example.de/leistungen.html → https://example.de/leistungen
    • https://example.de/kontakt.html → https://example.de/kontakt

    Dafür kannst du folgende Regeln in deiner .htaccess verwenden:

    .htaccess – .html aus URLs entfernen

    apache

    Apache Configuration
    RewriteEngine On
    
    # Intern weiterhin .html-Dateien ausliefern
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^(.+?)/?$ $1.html [L]
    
    # Aufrufe mit .html permanent auf URL ohne Endung umleiten
    RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC]
    RewriteRule ^(.+)\.html$ /$1 [R=301,L]

    Wichtig: Die Reihenfolge sollte umgekehrt sein, damit die Weiterleitung vor dem internen Rewrite ausgeführt wird. Die empfohlene vollständige Version lautet daher:

    apache

    Apache Configuration
    RewriteEngine On
    
    # .html aus der URL entfernen (301 Redirect)
    RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC]
    RewriteRule ^(.+)\.html$ /$1 [R=301,L]
    
    # Intern auf .html-Datei zugreifen
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^(.+?)/?$ $1.html [L]

    Ergebnis

    • Besucher sehen URLs ohne .html.
    • Die tatsächlichen HTML-Dateien bleiben unverändert.
    • Alte URLs mit .html werden per 301 weitergeleitet.
    • Suchmaschinen können die neue URL indexieren.

    Hinweis: Falls deine Website in einem Unterverzeichnis läuft oder du auch URLs mit abschließendem Slash (/) unterstützen möchtest, müssen die Regeln gegebenenfalls angepasst werden.

  • Servus bytesbarn

    wesentlich sauberer würde das mit einer .htaccess funktionieren (ungetestet)

    [RS] 2000 G11 | 3x 1000 G12 Pro | 2x Vincent van Bot | Piccolo | Piccolo ARMore
    [VPS] 1000 G9 | 500 G11s | mikro G11s | 4x nano G11s | 4x piko G11s
    [WH] 8000 SE | 4000 SE | 2000 SE | 2x Spezial