Harald: Redirect 301 anstatt 302 - CoolUri

Hallo

Ich habe im Netz nichts passendes gefunden und frage mal hier nach.
Problem

TYPO3 - CoolUri

Eine Seite hat sich in der URL geändert.
CoolUri schreibt die alte URL automatisch auf die Neue URL um.
Leider mit dem Header 302.

Weiss jemand ob es bei CoolURI die Möglichkeit gibt dass alte URL autmatisch immer per 301 weitergeleitet werden.

.htaccess nützt in diesem Fall nichts, da es über 3000 Urls betreffen würde und in der .htaccess jede einzelen Adresse dafür umgeleitet werden müsste.

Bitte um eure info.
SG
Harald

  1. Ich habe im Netz nichts passendes gefunden und frage mal hier nach.

    Das TER ist öffentlich im Netz erreichbar, die Extension selbst ist auch quelloffen. Du hättest nur in den Quelltext schauen müssen.

    Problem

    TYPO3 - CoolUri

    Ja, die Extension CoolURI ist katastrophal schlecht an der TYPO3-API vorbeiprogrammiert - das ist ein Problem, leider wird sie trotzdem sehr häufig verwandt.

    Eine Seite hat sich in der URL geändert.
    CoolUri schreibt die alte URL automatisch auf die Neue URL um.
    Leider mit dem Header 302.

    Ja, dämlich - und seit x Versionen wird das den Entwicklern gesagt, die weigern sich aber einen simplen konfigurierbaren Schalter einzubauen (bzw. ignorieren das).

    Weiss jemand ob es bei CoolURI die Möglichkeit gibt dass alte URL autmatisch immer per 301 weitergeleitet werden.

    Die einzige Möglichkeit, das zu ändern ist hardcodiert die Funktion zu patchen:

    Link_Func::redirect() in cooluri/link.Functions.php

    Es gibt keinen Hook, keine XCLASS-Funktion und auch keine Konfigurationsmöglichkeit.

    .htaccess nützt in diesem Fall nichts, da es über 3000 Urls betreffen würde und in der .htaccess jede einzelen Adresse dafür umgeleitet werden müsste.

    Ja - das ist aber aus Performancegründen die bessere Variante - das ist auch die Meinung von Dmitry Dulepov der dringend davon abrät, redirect von RealURL erledigen zu lassen, weil das eben der Webserver viel besser kann.

    1. Link_Func::redirect() in cooluri/link.Functions.php

      Hi

      Und wo setze ich das bei der benannten Datei ein?

      1. Link_Func::redirect() in cooluri/link.Functions.php

        Und wo setze ich das bei der benannten Datei ein?

        Du könntest im Texteditor deiner Wahl nach der genannten Funktion in der genannten Datei suchen und sie dir zumindest mal ansehen.

        1. Du könntest im Texteditor deiner Wahl nach der genannten Funktion in der genannten Datei suchen und sie dir zumindest mal ansehen.

          Hi
          Das Habe ich bereits gemacht.
          in der benannten Datei steht davon leider nichts drinnen :-(

          Lg
          Harald

          1. in der benannten Datei steht davon leider nichts drinnen :-(

            Was meinst du wohl, wo _ich_ die Informationen her habe? Ich versichere dass das genau in dem File drin steht.

            Wobei ich gerade sehe, dass der Status zumindest an anderer stelle bereits auf 301 gesetzt wird und nur im genannten Script im "Zweifel" auf 302. (Version 1.0.27 vom 24. August 2011).

            1. in der benannten Datei steht davon leider nichts drinnen :-(

              Was meinst du wohl, wo _ich_ die Informationen her habe? Ich versichere dass das genau in dem File drin steht.

              Wobei ich gerade sehe, dass der Status zumindest an anderer stelle bereits auf 301 gesetzt wird und nur im genannten Script im "Zweifel" auf 302. (Version 1.0.27 vom 24. August 2011).

              Hi

              In der Benannten Datei habe ich nach "Redirect" gesucht und nuf folgende Abschnitte gefunden:

              public static function prepareforRedirect($path,$lConf) {  
                
                  $path = self::prepareforOutput($path,$lConf);  
              
              
              public static function redirect($path) {  
                
                  $path = preg_replace('~^/~','',$path);  
              
              

              Sorry, aber dein Ansatz steht in meiner datei nirgends drinnen.
              Lg
              Harald
              case 'redirect': header((string)$lConf->cache->pagenotfound->status); self::redirect((string)$lConf->cache->pagenotfound->behavior); break;

              1. In der Benannten Datei habe ich nach "Redirect" gesucht und nuf folgende Abschnitte gefunden:

                public static function redirect($path) {

                $path = preg_replace('~^/~','',$path);

                
                >   
                > Sorry, aber dein Ansatz steht in meiner datei nirgends drinnen.  
                  
                Was ist denn die "public static function redirect()" in der Klasse "Link\_Func" - könnte das vermutlich Link\_Func::redirect() sein?  
                  
                [Gültigkeitsbereichsoperator (::)](http://www.php.net/manual/de/language.oop5.paamayim-nekudotayim.php)
                
                1. In der Benannten Datei habe ich nach "Redirect" gesucht und nuf folgende Abschnitte gefunden:

                  public static function redirect($path) {

                  $path = preg_replace('~^/~','',$path);

                  
                  > >   
                  > > Sorry, aber dein Ansatz steht in meiner datei nirgends drinnen.  
                  >   
                  > Was ist denn die "public static function redirect()" in der Klasse "Link\_Func" - könnte das vermutlich Link\_Func::redirect() sein?  
                    
                    
                  Hi  
                    
                  Wenn ich bei  
                  ~~~php
                  public static function redirect($path,$code=301) {  
                    
                     $path = preg_replace('~^/~','',$path);  
                   
                  

                  code=301 einfüge, genügt das?

                  Das ist absolutes Neuland für mich

                  1. Wenn ich bei

                    public static function redirect($path,$code=301) {

                    $path = preg_replace('~^/~','',$path);

                    
                    > code=301 einfüge, genügt das?  
                      
                    Das sorgt zumidest dafür, dass - wenn kein anderer status gesetzt wird - immer 301 verwandt wird. Ob das in deinem Fall ausricht oder zu sonsten Konseqenzen führt, kan nich nicht sagen.  
                      
                    Dazu kenne ich die Extension zu wenig (ich hab' nur gelegentlich damit zu tun und bin froh, wenn ich den Mist nicht angreifen muss) - ich verlasse mich lieber auf RealURL, da sich diese sauber an der TYPO3-API orientiert und dasselbe tut.  
                      
                    
                    
                    1. Das sorgt zumidest dafür, dass - wenn kein anderer status gesetzt wird - immer 301 verwandt wird. Ob das in deinem Fall ausricht oder zu sonsten Konseqenzen führt, kan nich nicht sagen.

                      Hi
                      Ich habe das mal versucht.
                      Lt. REdirect Ceck wir immer noch einen 302er Weiterleitung angezeigt.
                      Schade

                      Lg
                      Harald

                      1. Lt. REdirect Ceck wir immer noch einen 302er Weiterleitung angezeigt.

                        Dann kommt die Umleitung aus einem anderen Script - durchsuch einfach den kompletten Sourcecode der Extension nach aufrufen der Funktion oder nach einem vorkommen von "302". Mit grep ist das flott erledigt.

                        1. Dann kommt die Umleitung aus einem anderen Script - durchsuch einfach den kompletten Sourcecode der Extension nach aufrufen der Funktion oder nach einem vorkommen von "302". Mit grep ist das flott erledigt.

                          Hi

                          Leider ohne Erfolg.

                          Weder 302 och die Funktion habe ich in all den Dateien gefunden!

                          Lg
                          Harald

                          1. Dann kommt die Umleitung aus einem anderen Script - durchsuch einfach den kompletten Sourcecode der Extension nach aufrufen der Funktion oder nach einem vorkommen von "302". Mit grep ist das flott erledigt.

                            Hi
                            Hat denn niemand eine Lösung für mich?
                            Ist es Möglich CoolUri mitzuteilen, dass alle Urls anstatt per 302 per 301 auf die neue URL weitergeleitet werden?

                            Danke
                            Harald

                            1. Dann kommt die Umleitung aus einem anderen Script - durchsuch einfach den kompletten Sourcecode der Extension nach aufrufen der Funktion oder nach einem vorkommen von "302". Mit grep ist das flott erledigt.

                              An alle.
                              Die angeführte Anleitung passt.

                              Ich hatte nicht die aktuelle Version von CoolUri

                              Danke