Ulysses: permanente Weiterleitung mittels .htaccess

Hallo liebe Alle!
Ich scheitere gerade an dem Versuch eine permanente Weiterleitung mittels .htaccess zu realisieren.

Folgendes habe ich in die .htaccess-Datei geschrieben:
Redirect permanent /index.php?id=1 http://www.example.com/datei1.html
Redirect permanent /datei3.html http://www.example.com/datei3neu.html

Gebe ich nun die Adresse http://www.example.com/index.php?id=1 in meinen Browser ein, so erscheint trotzdem die Seite http://www.example.com/index.php?id=1 und nicht http://www.example.com/datei1.html
Die Adresse http://www.example.com/datei3.html wird hingegen schon auf http://www.example.com/datei3neu.html weitergeleitet.

Was mache ich falsch und wie muss ich vorgehen, um eine Weiterleitung der Datei http://www.example.com/index.php?id=1 nach http://www.example.com/datei1.html zu erreichen?

Danke und LG Ulysses

  1. Hallo!

    Folgendes habe ich in die .htaccess-Datei geschrieben:
    Redirect permanent /index.php?id=1 http://www.example.com/datei1.html
    Redirect permanent /datei3.html http://www.example.com/datei3neu.html

    Gebe ich nun die Adresse http://www.example.com/index.php?id=1 in meinen Browser ein, so erscheint trotzdem die Seite http://www.example.com/index.php?id=1 und nicht http://www.example.com/datei1.html
    Die Adresse http://www.example.com/datei3.html wird hingegen schon auf http://www.example.com/datei3neu.html weitergeleitet.

    Vermutung: Innerhalb der .htaccess trennt der Apache die URL schon nach Query-String und Rest auf, und im Redirect kann nur dieser Pfad-Teil abgegriffen werden.

    Verwende Rewriting, damit kannst du den Redirect feiner steuern - aber auch dort ist der Query-String vom Rest der URL schon getrennt zu behandeln.

    Sven

    1. Hi!

      Vermutung: Innerhalb der .htaccess trennt der Apache die URL schon nach Query-String und Rest auf, und im Redirect kann nur dieser Pfad-Teil abgegriffen werden.

      Verwende Rewriting, damit kannst du den Redirect feiner steuern - aber auch dort ist der Query-String vom Rest der URL schon getrennt zu behandeln.

      Sven

      Hab schon befürchtet, dass ich die Rewrite-Engine anwerfen und mich damit näher beschäftigen muss.
      Danke für deine Antwort!
      Ulysses

  2. Hi!

    Hallo liebe Alle!
    Ich scheitere gerade an dem Versuch eine permanente Weiterleitung mittels .htaccess zu realisieren.

    2. Versuch: Diesmal mittels PHP - leider hab ich damit noch keine Erfahrung! Folgenden Code habe ich mit Hilfe des 'Quakenet/#php Tutorials' zusammengestellt.
    Datei 'index.php'

    <?php  
      switch ($_GET['id']) {  
      case "1":  
        header("HTTP/1.1 301 Moved Permanently");  
        header("Location: http://www.example.com/datei1.html");  
        break;  
      case "2":  
        header("HTTP/1.1 301 Moved Permanently");  
        header("Location: http://www.example.com/datei2.html");  
        break;  
      default:  
        header("HTTP/1.1 301 Moved Permanently");  
        header("Location: http://www.example.com/index.html");  
        break;  
    }  
    ?>
    

    Das funktioniert. Jetzt wird index.php?id=1 nach http://www.example.com/datei1.html weitergeleitet. Nun meine Frage: Gibt es dagegen irgendwelche Einwände z.B. in Bezug auf Sicherheit? Ich hab, wie gesagt, noch absolut keine Erfahrung mit PHP.

    Danke und LG Ulysses

    1. Hi,

      Nun meine Frage: Gibt es dagegen irgendwelche Einwände z.B. in Bezug auf Sicherheit?

      Nein, eigentlich nicht. Allerdings solltest du abfragen, ob es $_GET['id'] auch gibt - denn sonst wirft dir das Script einen Fehler (bei ordentlich eingestelltem error_reporting). Also isset() oder empty() verwenden.

      Und statt zwei mal header() aufzurufen, koenntest du den Statuscode auch ueber den dritten Parameter mitgeben.

      MfG ChrisB

      --
      „This is the author's opinion, not necessarily that of Starbucks.“
      1. Hi!

        Danke für die Anregungen! Werd' gleich mal in der Doku nachlesen.

        LG Ulysses