nginx Rewrites für 3.1

  • In der Hoffnung, es findet sich jemand mit tiefgreifendem nginx-Wissen...
    Ich schaffe es irgendwie nicht, die URLs aus dem alten 3.1 auf das 4.1 per rewrite auf nginx umzuleiten.


    die URL der 3.1 sieht so aus: domain.com/index.php?page=User&userID=1&s=234523452435
    und sollte danach natürlich auf domain.com/user/1


    SEO am 4.1 ist aktiviert - meine Umschreibung sieht so aus:


    Code
    location / {
           try_files  $uri $uri/ @rewrite;
        }
        location @rewrite {
    	## alte Seiten
            rewrite ^/index\.php\?page=User&userID=([0-9]+)(.*) /user/$1? permanent;
    	## SEO 4.1
            rewrite ^/(news/|community/|wcf/|blog/|downloads/|galerie/|kalender/)?(.*) /$1index.php?$2 last;
       }

    aber ganz egal, was ich eintippe, ich werde immer wieder auf die Startseite umgeleitet.
    auch das Escapen von "=" und "&" ändert nichts.


    Interessanterweise - wenn ich das rewrite auf -> rewrite ^/test/([0-9]+)(.*) /user/$1? permanent; ändere funktioniert es einwandfrei - nur ist es ja nict das, was ich brauche...


    kann es sein, dass das index.php schon im try_files vor dem @ReWrite gefunden wird und daher keine Umleitung stattfindet, da in den Rewrite Logs auch nichts zu finden ist.
    Und wenn ja, wie umgeht man das? Jemand eine Idee?

  • ich hab aktuell dies drinnen:


    Code
    rewrite ^/tag/([0-9]+)\-([^/.]*)/?$ /index.php?tagged/$1-$2/&objectType=com.woltlab.wbb.thread last;
    		rewrite ^/user/([0-9]+)\-([^/.]*)/?$ /index.php?user/$1-$2/ last;
    		rewrite ^/([^/\.]+/)*([^/\.]+)/([0-9]+)\-([^/\.]*)/last\-post\.html$ /index.php?thread/$3-$4/&action=lastPost last;
    		rewrite ^/([^/\.]+/)*([^/\.]+)/([0-9]+)\-([^/\.]*)/first\-new\-post\.html$ /index.php?thread/$3-$4/&action=firstNew last;
    		rewrite ^/([^/]+/)*([^/.]+)/p([0-9]+)\-([^/.]*)/?$ /index.php?thread/$4/&postID=$3&$args#post$3 last;
    		rewrite ^/([^/]+/)*([^/.]+)/([0-9]+)\-([^/.]*)/index([0-9]+)\.html$ /index.php?thread/$3-$4/&pageNo=$5 last;
    		rewrite ^/([^/]+/)*([^/.]+)/([0-9]+)\-([^/.]*)/?$ /index.php?thread/$3-$4/ last;
    		rewrite ^/([^/]+/)*board([0-9]+)\-([^/.]+)/index([0-9]+)\.html$ /index.php?$2-$3/&pageNo=$4 last;
    		rewrite ^/([^/]+/)*board([0-9]+)\-([^/.]+)/?$ /index.php?$2-$3/ last;
    		rewrite ^/index.html$ /index.php last;

    Stammt aus dem blog und wurde dann teils an die spezifischen regeln des wbb3.1 seos angepasst...

  • rewrite ^/user/([0-9]+)\-([^/.]*)/?$ /index.php?user/$1-$2/ last;

    Ja das würde aber voraussetzen, dass ich das 3.1 SEO optimiert betrieben hätte, was aber leider nicht der Fall ist.
    Wie gesagt, meine URL zum Profil sieht so aus: index.php?page=User&userID=1&s=234523452435 - wobei der sid am Ende ja vernachlässigbar ist

  • hmm, müsste doch dann aber sowas sein wie:
    rewrite ^/index\.php\?page=User&userID=([0-9]+)?$ /index.php?user/$1/ last;
    Ist jetzt ungetestet, aber so in etwa müsste es klappen...

  • Ich vermute mal stark dass es sich mit der WBB 4.1 Rewrite beisst


    rewrite ^/(news/|community/|wcf/|blog/|downloads/|galerie/|kalender/)?(.*) /$1index.php?$2 last;

  • Ich vermute mal stark dass es sich mit der WBB 4.1 Rewrite beisst


    es dürfte auch daran liegen, dass ja index.php ja die Basis bildet, daher kann man dies ja auch schwerlich umschreiben.
    Eine Lösung - die mir persönlich nicht gut gefällt aber dafür funktioniert - ist folgende:


    if ($arg_page = User) { rewrite ^ /user/$arg_userID? permanent; }

  • Jo if sollte man vermeiden, aber wenn es nicht anders geht. Ich hatte das Problem nicht, da ich mit WBB 3.1 SEO URL's hatte.

    • Official Post

    Hallo,

    Eine Lösung - die mir persönlich nicht gut gefällt aber dafür funktioniert - ist folgende:

    es geht nicht anders. Ich setze es selbst in einer Community, die ich als Systemadministrator betreue exakt so ein.


    Als "Geschenk" noch der Rewrite für die Zitatlinks (der Link entspricht noch Burning Board 4.0 und ist entsprechend anzupassen).

    Code
    set $quoteTest NO;
            if ($arg_page ~ Thread) {
                    set $quoteTest T;
            }
            if ($arg_postID) {
                    set $quoteTest "${quoteTest}T";
            }
            if ($quoteTest = TT) {
                    rewrite ^ /index.php/Thread/?postID=$arg_postID#post$arg_postID? permanent;
            }

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!