Ankündigung

Einklappen
Keine Ankündigung bisher.

301 Weiterleitung in vBulletin 5 ohne routestring in url

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    301 Weiterleitung in vBulletin 5 ohne routestring in url

    Hi,

    wir haben ein Problem mit der URL-Struktur eines vBulletin 5 und der Umleitung der Urls. Es wäre super, wenn hier jemand helfen könnte.
    Leider hat der Beitrag mir auch nicht weiter helfen können, da ich mich mit RewriteCond und regulären Ausdrücken nicht so gut auskenne.

    Problem sind die Kategorien, welche in der Vergangenheit aus mehreren Foren zusammengefügt wurden, dabei auch verschiedene Zeichencodierungen hatten und nun nicht mehr vorhanden sind.
    Nach einem massiven Problem mit der DB mussten wir auf eine andere DB ziehen und verbunden damit von latin1 auf utf-8 umstellen. Dabei sind leider auch die routes verschiedener alter Datensätze unbrauchbar gewesen und die URLs mussten neu erzeugt werden.
    Nun zum Problem an sich.
    Da google immer noch die alte Struktur gelistet hat, würden wir gerne die alten urls mit 301 auf die neuen urls umleiten.

    Leider erzeugt die vBulletin htaccess immer einen "/index.php?routestring=" hinter der baseurl und vor dem eigentlichen Pfad.

    Kann hier jemand helfen, wie ich eine bzw. 20 Weiterleitungen einfügen kann ohne das "/index.php?routestring=" dazwischen funkt?

    Es soll zum Beispiel von "https://...de/fragen-und-antworten/expertenforum" auf "https://...de/allgemeines-forum/expertenforum".
    Mit dem folgenden code funktioniert es ja, aber es wird immer über "/index.php?routestring=" geleitet.

    Code:
    RewriteRule ^(.+)/fragen-und-antworten/(.+)$ http://%{HTTP_HOST}/$1/allgemeines-forum/$2 [R=301,L]
    Leider sind die 20 Urls nicht wirklich über eine Regel abzufangen, da diese alle individuell sind und keine nodeid enthalten. Daher auch noch die Frage ob eine gewisse Anzahl von Regeln nicht über schritten werden darf, oder es zu Verzögerungen beim Laden kommen kann.

    Kann das irgendwie abgefangen werden?
    Ich habe bereits versucht die RewriteRule an verschiedenen Stellen einzufügen, was aber auch nicht hilft bzw. wenn diese unten angehangen wird funktioniert es überhaupt nicht mehr.

    Die .htaccess siht wie folgt aus:
    Code:
    <IfModule mod_rewrite.c>
        RewriteEngine On
    
    RewriteRule ^(.+)/fragen-und-antworten/(.+)$ http://%{HTTP_HOST}/$1/allgemeines-forum/$2 [R=301,L]   
    
        # In some cases where you have other mod_rewrite rules, you may need to remove the
        # comment on the following RewriteBase line and change it to match your folder name.
        # This resets the other mod_rewrite rules for just this directory
        # If your site was www.example.com/forum, the setting would be /forum/
        RewriteBase /
    
        #To redirect users to the secure version of your site, uncomment the lines below
        #RewriteCond %{HTTPS} !=on
        #RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    
        # Send css calls directly to the correct file VBV-7807
        RewriteRule ^css.php$ core/css.php [NC,L]
    
        # Redirect old install path to core.
        RewriteRule ^install/ core/install/ [NC,L]
    
        # Main Redirect
        RewriteCond %{REQUEST_URI} !\.(gif|jpg|jpeg|png|css)$
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?routestring=$1 [L,QSA]
    
        # Because admincp is an actual directory.
        RewriteRule ^(admincp/)$ index.php?routestring=$1 [L,QSA]
    
    </IfModule>
    
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE application/atom+xml \
                              text/javascript \
                              application/x-javascript \
                              application/javascript \
                              application/json \
                              application/rss+xml \
                              application/vnd.ms-fontobject \
                              application/x-font-ttf \
                              application/xhtml+xml \
                              application/xml \
                              font/opentype \
                              image/svg+xml \
                              image/x-icon \
                              text/css \
                              text/html \
                              text/plain \
                              text/x-component \
                              text/xml
    </IfModule>
    
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType application/x-javascript A1209600
        ExpiresByType text/javascript A1209600
        ExpiresByType application/javascript A1209600
        ExpiresByType text/css A31536000
        ExpiresByType image/x-icon A2592000
        ExpiresByType image/icon A2592000
        ExpiresByType application/x-ico A2592000
        ExpiresByType application/ico A2592000
        ExpiresByType image/gif A2592000
        ExpiresByType image/jpeg A1209600
        ExpiresByType image/jpg A1209600
        ExpiresByType image/png A1209600
        ExpiresByType application/x-shockwave-flash A1209600
        ExpiresByType font/ttf A2592000
        ExpiresByType font/otf A2592000
        ExpiresByType font/x-woff A2592000
        ExpiresByType image/svg+xml A2592000
        ExpiresByType font/truetype A2592000
        ExpiresByType font/opentype A2592000
        ExpiresByType application/x-font-woff A2592000
        ExpiresByType application/vnd.ms-fontobject A2592000
    </IfModule>
    
    <IfModule mod_headers.c>
        Header set Connection keep-alive
        <filesmatch "\.(ico|flv|gif|swf|eot|woff|otf|ttf|svg)$">
            Header set Cache-Control "max-age=2592000, public"
        </filesmatch>
        <filesmatch "\.(jpg|jpeg|png)$">
            Header set Cache-Control "max-age=1209600, public"
        </filesmatch>
        <filesmatch "\.(eot|woff|otf|ttf|svg)$">
            Header set Cache-Control "max-age=2592000, public"
        </filesmatch>
        # css and js should use private for proxy caching https://developers.google.com/speed/docs/best-practices/caching#LeverageProxyCaching
        <filesmatch "\.(css)$">
            Header set Cache-Control "max-age=31536000, private"
        </filesmatch>
        <filesmatch "\.(js)$">
            Header set Cache-Control "max-age=1209600, private"
        </filesmatch>
    </IfModule>
    
    #don't allow some files that shouldn't really be present to be directly accessed.
    #note that attachements should never be directly accessed by the webserver because
    #we have permissions on the that are checked in the PHP code.
    <FilesMatch "(^#.*#|\.(bak|config|dist|inc|ini|log|gz|tar|zip|sh|sql|sw[op])|~)$">
        Order allow,deny
        Deny from all
        Satisfy All
    </FilesMatch>

    #2
    20 Sachen sollen weitergeleitet werden oder soll eine allgemeine Rule gemacht werden?
    Also bei 20 reicht ja schon ein normaler 301, oder?

    Ansonsten weiss da Synonym sicherlich was drüber, der hatte das damals für das SEO NW Forum gemacht. Soweit ich weiss mussten alle.. 301 halbautomatisch erstellt werden. und das waren nicht nur 20, sondern sehr viel mehr...

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.
    Ich denke, also BING ich :)


    Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

    Kommentar


      #3
      Schon mal vielen Dank für die Antwort.
      Es sollen ca. 20 einzelne/ individuelle Urls auf 20 neue individelle Urls per normale 301 umgeleitet werden. Also reicht. Es können aber ggf. auch noch weitere folgen.
      Da es sich um individuelle URLs ohne ID handelt, kann leider keine Regel bzw. Condition für alle erstellt werden.

      Es soll in der URL nur ein String durch einen anderen String ersetzt werden. Die im ersten Beitrag angegebene Regel macht das auch für alle Beiträge in der Kategorie "fragen-und-antworten". Leider wird hier immer der Routestring-Teil mit in die URL gestellt, da die umgeleitete URL über die index.php geleitet wird.

      Ich werde Synonym mal eine PM mit einer Liste der URLs zukommen lassen.
      Vielleicht kann er ja helfen.

      Kommentar


        #4
        Ach nee da brauchste den gar nicht fragen. Das ist einfach...

        Code:
        Redirect 301 /alter-pfad/ http://deinedomain.de/neuer-pfad/
        das schreibste einfach hinter:

        Code:
         
             #RewriteCond %{HTTPS} !=on     #RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

        wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.
        Ich denke, also BING ich :)


        Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

        Kommentar


          #5
          Ganz so einfach ist das leider anscheinend nicht.
          Da hatte ich die RewriteRule auch schon stehen. Leider wird trotzdem das "/index.php?routestring=" in die URL eingestrickt.

          Code:
           RewriteRule ^(.+)/fragen-und-antworten/(.+)$ http://%{HTTP_HOST}/$1/allgemeines-forum/$2 [R=301,L]
          Vielleicht war meine Aussage auch nicht komplett korrekt. Also die individuelle Domain enthält dann auch noch folgende Strings, welche ebenfalls mit abgefangen werden. Daher ja auch die RewriteRule von oben, wo auch die nachfolgenden Strings (bleiben gleich mit abgefangen werden.

          Die Forumkategorie war vorher /fragen-und-antworten/ und ist nun /allgemeines-forum/. Diese enthält auch noch Beiträge (strings), welche nun an /allgemeines-forum/ angehangen werden.

          Wie geschrieben, werden die URLs alle an die "https://....de/index.php?routestring=/allgemeines-forum/..." weitergeleitet. Ich würde aber gerne "https://....de/allgemeines-forum/..." erhalten.

          Edit: Ok, habe verstanden! Vergess das von oben :)
          Das sieht schon besser aus!

          Vielen Dank schon mal für die überragende und schnelle Hilfe!
          Ich habe auch URls, welche Sonderzeichen enthalten (z.B. %C3%A3%C2%BC ... %C3%A3%C2%BC ... ã%C2%BC ... ã%C2%BCh), kannst Du mir dabei auch helfen?

          Kommentar


            #6
            Hmm da kennt Syno sich am besten mit aus...

            Geht vielleicht das hier?:

            Code:
            RewriteRule ^verzeichnis/(.*)$ /anderes-verzeichnis/$1 [R=301,L]

            wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.
            Ich denke, also BING ich :)


            Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

            Kommentar


              #7
              Werde ich mal versuchen. Vielen Dank schon mal für deine Hilfe.

              Bevor ich mich wieder tot google noch eine Frage:

              Code:
              RewriteRule ^(.+)/laberecke(.+)$ https://beispiel.de/forum/allgemeines-forum/plauderecke$2 [R=301,L]
              Die RewriteRule oben funktioniert nicht, wenn die alte URL "https://beispiel.de/forum/allgemeines-forum/laberecke" lautet.
              Erst wenn hinter dieser ein / (https://beispiel.de/forum/allgemeines-forum/laberecke/) steht greift die Regel. Kann man daran was ändern? Evtl. über eine condition oder so?

              Kommentar


                #8
                Also ich denke, bei Dir ist da etwas mehr der Wurm drinnen, wenn da "Routestring" ist der sichtbaren URL erscheint. Kann eigentlich nämlich nicht sein, denn dieser Codeblock ist nur eine interne Adressänderung. Wenn Routestring aber in der URL erscheint, dann war das quasi schon vor Deinem 301 vorhanden und $1 hat es einfach übernommen.

                Schaut also sehr danach aus, dass Deine Rule beim ersten Zugriff nicht greift, die htaccess dann den String mit Routestring bildet (braucht das Forum auch, aber eben intern) und dann beim nächsten htaccess-Durchlauf Deine 301-Rule den Routestring-String neu zusammenbaut und den 301 ausführt.

                Letzte Frage. Klar geht das nicht, denn Du verwendest als Bedingung /laberecke(.+).... beachte da das .+, welches bedeutet, es muss noch min. ein Zeichen kommen. Entscheidend ist hier das +. Was Du suchst ist ein (.*). Der Stern besagt, es kann noch beliebig was kommen, es muss aber nicht.
                Der alte Sack hat gesprochen....

                Kommentar


                  #9
                  Wegen den Sonderzeichen in der Rule, also der Ausgangsseite. Die Prozentzeichen sind geschützt und bedeuten in der Rule was ganz anderes.

                  Der Apache kennt also kein "%C3%A3", das muss maskiert werden in "\xC3\xA3". Aus einem %, das als Zeichen gedacht ist, muss also ein \x werden.
                  Der alte Sack hat gesprochen....

                  Kommentar


                    #10
                    Auch ein Dank an Dich.
                    Dieses routesting wird bei der im Beitrag 7 genannten Variante schon nicht mehr mit übermittelt.
                    Und die URL .../laberecke funktioniert nun auch! Das hat mich Stunden nach vorne gebracht! Ein dickes Dankeschön!

                    Ich vermute die Sonderzeichen bekommt er bei korrekten Kategorien auch umgesetzt.
                    Sollte ich noch Probleme haben weiß ich ja wo die Experten sitzen.

                    Es kommt definitiv eine kleine Spende an euch!

                    Kommentar


                      #11
                      Links sind hier die harte Währung :D
                      lieber nen link als 1 bitcoin

                      wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.
                      Ich denke, also BING ich :)


                      Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

                      Kommentar


                        #12
                        Uiii, können wir Tauschen? Ein Bitcoin gegen einen Link
                        Wo soll denn ein solcher Link hin? Also meinst Du ein Link von SEO-NW auf so eine Art Partner-Seite? Oder ein Link hier im Forum? Stehe gerade etwas auf dem Schlauch

                        Kommentar


                          #13
                          :D Done und Danke

                          wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.
                          Ich denke, also BING ich :)


                          Support 24h Bereitschaft 0163 2161604 - NUR Für Kunden von SEO NW! Faires Hosting - Alternative Suchmaschinen

                          Kommentar

                          Lädt...
                          X

                          Das Rechtliche
                          Impressum | Widerruf | Datenschutz | Disclaimer | Links