.htaccess rewrite bei nicht vorhandenen html Seiten

  • Hallo Gemeinde,

    ich versuche nun schon länger ein Problem mit dem Weiterleiten einiger HTML Seiten, welche nicht mehr vorhanden sind auf die Startseite zu leiten.

    Alle Seiten befinden sich in einem Ordner "kuv", in welchem aber auch noch aktive Seiten abgelegt sind.

    Ziel soll es sein, das alle Aufrufe welche in das Verzeichnis "kuv" zeigen und dort keine passende htm/l Datei vorhanden ist auf die Startseite weiter zu leiten.

    Vielen lieben Dank für eure Unterstützung.

    Christopher

  • Zur hilfreichsten Antwort springen
  • .htaccess im kuv Verzeichnis:

    Code
    ErrorDocument 404 /

    Die Seite wird dann aber als Fehlerdokument mit dem Statuscode 404 übertragen. Du kannst dir auch was mit mod_rewrite bauen. Da gibt es einen Test, ob eine Datei existiert, den du in einer RewriteCond vor eine RewriteRule setzen kannst. Je nachdem, was man will, wäre das besser oder schlechter. Die Dokumentation hat die nötigen Informationen.

  • kannst du die nicht einfach alle listen und mit 301 in der htaccess umleiten? Oder von archive.org holen, wenn vorhanden, und nach kuv kopieren. Und wenn die Seiten nicht mehr existieren ist doch ein 404 die transparenteste Antwort ...

    The universe tends toward maximum irony. Don't push it.

    Einmal editiert, zuletzt von webdesignheld (29. August 2025 um 15:09)

  • Ungeprüft:

    Apache Configuration
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ DESTINATION/$1 [L]

    Gilt dann aber für alle Dateien. Falls es auf htm(l) beschränkt sein soll, braucht es noch zusätzliche Regeln

    • Hilfreichste Antwort

    Falls es auf htm(l) beschränkt sein soll, braucht es noch zusätzliche Regeln

    Nö:

    Apache Configuration
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*\.html?)$ DESTINATION/$1 [L,R=301]

    Der \ macht den . zum normalen Zeichen. Das ? macht das l optional. 301 ist der Code für eine dauerhafte Umleitung, die die alte URL ersetzt. 302 wäre für eine temporäre Umleitung, bei der die alte URL quasi noch existiert (aber im Browser wird bei beiden die URL angezeigt, zu der umgeleitet wird). Ohne R ist es eine interne Umleitung und die Zielseite wird unter der URL der nicht vorhandenen Seite ausgegeben.

  • Super, ihr seid so gut :love: .

    Vielen lieben Dank, das hat funktioniert und auch die Erklärung war sehr hilfreich :thumbup:

    Zitat
    Apache Configuration
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*\.html?)$ DESTINATION/$1 [L,R=301]

    Der \ macht den . zum normalen Zeichen. Das ? macht das l optional. 301 ist der Code für eine dauerhafte Umleitung, die die alte URL ersetzt. 302 wäre für eine temporäre Umleitung, bei der die alte URL quasi noch existiert (aber im Browser wird bei beiden die URL angezeigt, zu der umgeleitet wird). Ohne R ist es eine interne Umleitung und die Zielseite wird unter der URL der nicht vorhandenen Seite ausgegeben.

    Lieben Gruß und einen guten Start in die Woche

    Christopher