Zum Inhalt springen

RealURL: alte URL -> neue URL

Erstellt am 9. Juni 2007 · 2 Antworten · letzte Antwort am 24. Juni 2007

Tags: RealURL, Weiterleitungen & 404, Frage

tobru ·

Hallo Zusammen

Ich stelle meine RealURL Konfiguration um. Anstatt www.domain.com/seite.html wird die URL neu www.domain.com/seite/ heissen.
Nun möchte ich aber, dass wenn einer www.domain.com/seite.html anfordert (zb Verlinkung einer anderen Seite), auf die richtige URL www.domain.com/seite/ weitergeleitet wird mit dem HTTP Status "302 Moved permanently".

Kann mir jemand einen Tipp geben wie ich das machen könnte?

Vielen Dank
Gruss
Tobias

tobru ·

Hallo Zusammen

Ich habe das über das page not found handling gemacht.
Mein kleines Skript hat mehrere Funktionen:

* Ruft jemand eine alte URL auf, wird er auf die neue weitergeleitet (via 301 Moved Permanently
* Ruft jemand eine URL aus dem geschützten Bereich auf und ist nicht eingeloggt, wird er auf die Login Seite weitergeleitet (via 303 See Other)
* Ruft jemand eine nicht vorhandene Seite auf, bekommt er eine 404 Not Found Meldung und wird je nach Browser auf die 404 Seite mit weiteren Infos (zb Sitemap) weitergeleitet.

Gruss
Tobias

typo3conf/pagenotfoundhandling.php

<?php
  class user_pageNotFound {
    function pageNotFound($param, $ref) {
      $currentDomain = "www.domain.tld";
      //Wurde eine alte URL eingegeben? Redirect zu neuer
      if(preg_match('/.html/',$param['currentUrl'])) {
        $pagename = preg_replace('/.html/', '/', $param['currentUrl']);
        $location = "Location: http://$currentDomain$pagename";
        header('HTTP/1.1 301 Moved Permanently');
        header($location);
      }
      //Wurde die URL des Intern Bereich eines nicht eingeloggten Users eingegeben?
      elseif(preg_match('/intern/',$param['currentUrl'])) {
        $currurl = $param['currentUrl'];
        header('HTTP/1.1 303 See Other');
        header("Location: http://$currentDomain/abteilung/loginlogout/?redirect_url=$currurl");
      }
      //die URL ist nicht vorhanden...
      else {
        header('HTTP/1.0 404 Not Found');
        echo "<html><head><meta http-equiv=\"refresh\" content=\"0; URL=http://$currentDomain/notinmenu/error-404/\"></head><body>404, Page not found. Redirect to <a href=\"http://$currentDomain/notinmenu/error-404/\">info page</a>...</body></html>";
      }
   }
}
?>