Benutzerdefinierte Suche

Automatische Weiterleitung von einer 404 ErrorPage

  1. joedelord

    joedelord Thread StarterMacUser Mitglied

    Mitglied seit:
    12.12.2002
    Beiträge:
    481
    Zustimmungen:
    0
    Weiterleitung mit mod_rewrite

    Hallo liebe Macuser

    Da die Homepage an der ich gerade arbeite, eine nicht wirklich benutzerfreundliche Ordnerstruktur aufweist, ist es mir ein anliegen trotzdem eine einfache Funktionalität zu gewährleisten. Es geht um folgendes

    Bsp:
    Es gibt inerhalb der Homepage einen Bereich "Musik". Die deutsche Variante davon befindent sich in domain/de/musik/
    Um einen schnellen und einfachen Zugriff auf diesen Bereich zu ermöglichen soll der Benutzer automatisch zu dieser Adresse weitergeleitet werden, wenn er domain/musik eingibt.

    Eine umständliche Möglichkeit wäre, für jedes Schlüsselwort einen eigenen Ordner anzulegen mit einer index.htm Datei die dann die Weiterleitung vornimmt. Diese Variante ist jedoch sehr arbeitsinteniv und schwer zu warten.

    Wie kann ich mein Vorhaben lösen? Ich hab schon ein bischen mit .htaccess hrumexperimentier aber noch keine sinnvollen Ergebnisse erhalten.

    Wer kann helfen?

    lg, joedelord
     
    joedelord, 12.11.2005
  2. Difool

    Difool Frontend Admin

    Mitglied seit:
    18.03.2004
    Beiträge:
    8.295
    Medien:
    31
    Zustimmungen:
    1.226
    h joedelord,

    hast du Zugriff auf die error-page?
    Wenn ja, leg doch da die direkte Weiterleitung rein.

    Gruß Difool
     
    Difool, 12.11.2005
  3. joedelord

    joedelord Thread StarterMacUser Mitglied

    Mitglied seit:
    12.12.2002
    Beiträge:
    481
    Zustimmungen:
    0
    mein Problem ist, dass ich anscheinend nicht herausfinden kann welcher Seitenaufruf die 404 Seite ausgelöst hat. es wäre möglich durch ein Script die Server log auszuwerten und damit heruszufinden wohin der Benutzer unterwegs war, diese Möglichkeit schein mir aber ein bischen zu rechenintensiv zu sein. Eventuell würden sich auch fehler ergeben wenn zwei benutzer zeitgleich ungültige Adressen aufrufgen.

    lg, joedelord
     
    joedelord, 12.11.2005
  4. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Im .htaccess-File:
    Code:
    Redirect /musik http://www.domain.de/de/musik/
    So weit ich weiß geht das aber nur case sensitive. Für Eingaben wie MuSik müsstest Du mod_rewrite (falls verfügbar) bemühen.
     
    Jakob, 12.11.2005
  5. joedelord

    joedelord Thread StarterMacUser Mitglied

    Mitglied seit:
    12.12.2002
    Beiträge:
    481
    Zustimmungen:
    0
    Vielen Dank für die Hilfe, Problem gelöst und zwar wie folgt;

    Ich habe nun in meinm Stammverzeichnis eine .htaccess Datei liegen in dieser mit dem mod_rewrite Modul die Weiterleitungen passieren. Nachdem ich anfangs grobe Probleme damit hatte ist es jetzt für meinen geschmack ganz nett gelöst. und zwar

    Code:
    # .htaccess im Stammverzeichnis
    #
    # Aktivierung der RewriteEngine
    RewriteEngine on
    # setzen der einzelnen Rules, eine pro Zieldatei zB bar.htm
    RewriteRule ^([Ss]uchstr.*|[Ss]uschstring2)$ http://www.domain.at/foo/bar.htm [R=301]
    
    und im direkten Unterverzeichnis foo wird die RewriteEngine wieder deaktiviert um Endlosschleifen und damit 500er Fehlermeldungen zu verhindern
    Code:
    # .htaccess in Stammverzeichnis/foo/
    #
    # Deaktivierung der RewriteEngine
    RewriteEngine off
    
    Erklärung:
    Die RewriteRule vergleicht die Suchstrings (als RegEx) mit der angeforderten Url und leitet sie dann entsprechend weiter. Die Notierung von [R=301] bedeutet, dass es sich um einen externen redirect handelt, wobei die nummer dem HTTP Statuscode entspricht (301 = permanent verschoben, gültig sind 300-400)

    Link dazu:
    modrewrite.de

    nochmals Danke, joedelord
     
    joedelord, 13.11.2005
  6. dms

    dms

    Geht aber auch einfacher.

    Erstelle das Verzeichnis musik und leite alle Anfragen auf den Ordner /de/musik um. Lege im Ordner /musik eine .htaccess an mit folgendem Inhalt:
    Code:
    RewriteEngine on
    RewriteRule ^(.*)$ /de/musik/$1
    Du könntest auch noch eine Bedingung davor setzen und abfragen ob die Datei existiert. So könntest Du spezielle Dateien praktisch "überschreiben". Existiert die Datei, wird sie angezeigt. Existiert sie nicht, wird auf den Ordner /de/musik umgeleitet:
    Code:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} ^.*/musik/$
    RewriteRule ^(.*)$ /de/musik/$1
    
     
  7. joedelord

    joedelord Thread StarterMacUser Mitglied

    Mitglied seit:
    12.12.2002
    Beiträge:
    481
    Zustimmungen:
    0
    @dms:
    Wenn ich das richtig verstehe, dann ist das die Möglichkeit die ich vermeiden wollte. Diese dezentrale Variante war mein erster Zugang (Weiterleitungen mit PHP). Bei Änderungen der Seite müsste man aber auch in jedem ordner die einzelnen .htaccess files ändern, was auf dauer unübersichtlich wird. deshalb habe ich für die oben beschribene zetralisierte Variante entschieden.

    lg, joedelord
     
    joedelord, 13.11.2005
  8. dms

    dms

    Ok, das Gegenargument gegen meine Variante verstehe ich, jedoch sehe ich kein Pro-Argument für Deine Variante.

    Vielleicht stehe ich auf dem Schlauch, aber so wie ich das jetzt verstehe musst Du bei einer Änderung der Seite sowohl alle Suchstrings (das dürften die kompletten Pfade zu jeder einzelnen Datei sein, oder?) anpassen sowie die Ziel-URI.
     
  9. joedelord

    joedelord Thread StarterMacUser Mitglied

    Mitglied seit:
    12.12.2002
    Beiträge:
    481
    Zustimmungen:
    0
    Nach meinen überlegungen, sollte man Änderungen innerhalb von ca 2 minuten durchführen können. Ich poste hier mal den Inhalt der original .htaccess Datei;

    Code:
    # oskar_aichinger root
    
    ErrorDocument 404 http://www.oskaraichinger.at/error/404.xhtml
    
    # mod_rewrite
    RewriteEngine on
    
    # Biografie, index.htm (Kurzbiografie)
    RewriteRule ^([Bb]iografie|[Bb]iographie|[Bb]io|[Aa]ichinger|[Oo]ssi|[Oo]skar)$ http://www.oskaraichinger.at/de/biografie/ [R=301]
    # Biografie, fotos.htm
    RewriteRule ^([Ff]oto.*|[Bb]ild.*)$ http://www.oskaraichinger.at/de/biografie/fotos.htm [R=301]
    # Biografie, links.htm
    RewriteRule ^([Ll]ink.*)$ http://www.oskaraichinger.at/de/biografie/links.htm [R=301]
    # Biografie, kontakt.htm
    RewriteRule ^([Kk]ontakt.*)$ http://www.oskaraichinger.at/de/biografie/kontakt.htm [R=301]
    # Biografie, presse.htm
    RewriteRule ^([Pp]resse|[Mm]edi.*)$ http://www.oskaraichinger.at/de/biografie/presse.htm [R=301]
    
    # Musik, index.htm (Werkverzeichnis)
    RewriteRule ^([Mm]usik|[Ww]erk.*)$ http://www.oskaraichinger.at/de/musik/ [R=301]
    # Musik, diskographie.htm
    RewriteRule ^([Dd]isko.*)$ http://www.oskaraichinger.at/de/musik/diskographie.htm [R=301]
    
    # Aktuelles, index.htm (Aktuelle Bands & Projekte - ?berblick)
    RewriteRule ^([Bb]and.*|[Pp]rojekt.*|[Aa]ktuell.*)$ http://www.oskaraichinger.at/de/aktuelles/ [R=301]
    # Aktuelles, infos.htm
    # foo
    # Aktuelles, termine.htm
    RewriteRule ^([Tt]ermin.*|[Kk]onzert.*|[Aa]uftritt.*)$ http://www.oskaraichinger.at/de/aktuelles/termine.htm [R=301]
    # Aktuelles, neue_cds.htm 
    RewriteRule ^([Cc]d.*|[Pp]latte.*|[Ll][Pp])$ http://www.oskaraichinger.at/de/aktuelles/neue_cds.htm [R=301]
    
    Erklärung:
    zu jeder vorhandenen Seite gibt es eine RewriteRule. In dieser Rule sind alle Stichworte beschrieben, bei denen automatisch zur gewollten Seite weitergeleitet wird.
    z.B: bei gibt man www.oskaraichinger.at/konzerte ein wird man automatisch auf www.oskaraichinger.at/de/aktuelles/termine.htm weitergeleitet. also fast Usability pur!

    Ich hoffe, dass dieses Beispiel die Sache ein bischen verdeutlicht.
    Ich bin jederzeit für Tips und Hinweise offen.

    lg, joedelord
     
    joedelord, 13.11.2005
  10. dms

    dms

    Ah, dann habe ich die Eingansfrage wohl falsch verstanden. Mit den ganzen Shortcuts macht das so natürlich Sinn.
     
Die Seite wird geladen...
Ähnliche Themen - Automatische Weiterleitung einer
  1. Bella94
    Antworten:
    2
    Aufrufe:
    345
    Bella94
    17.10.2016
  2. derbuick
    Antworten:
    5
    Aufrufe:
    2.348
    derbuick
    15.11.2013
  3. e-dude
    Antworten:
    5
    Aufrufe:
    860
    Dizzy.w3
    18.12.2010
  4. moloch500
    Antworten:
    3
    Aufrufe:
    862
    moloch500
    03.03.2009
  5. beebop69
    Antworten:
    6
    Aufrufe:
    7.805
    Darkstar
    24.09.2004