Announcement

Collapse
No announcement yet.

vb 5 SEO - Umlaute und weitere Fragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • vb 5 SEO - Umlaute und weitere Fragen

    Hallo,

    wir testen gerade den Umstieg von vB 3.8.11 auf vB5 und habe dazu folgenden Fragen:
    1. Mir aufgefallen, dass die URL Umschreibung von Umlauten bei uns fehlerhaft ist. Ein Forum dass sich "Präsentation & Darstellung" nennt, wird als URL so umgeschrieben: "präsentation-darstellung"
    2. Wo im admincp kann man Einstellung zum SEO, also auch der Art wie URLs umgeschrieben werden, vornehmen?
    3. Wo lassen sich die unnötigen Bestandteile, wie Blogs, Artikel und Kalender deaktivieren?
    4. Wie bekomme ich das /forum/ aus dem Dateipfad? Bei einem Umstieg würde ich gerne die URLs 1:1 so belassen, wie wir sie bisher haben. (daher auch die Frage 2)


    Danke.
    tektorum.de
    archinoah.de
    Visionstudio

  • #2
    Zu 1. Also bei mir funktioniert das ohne eine gesonderte Einstellung einwandfrei. Ich habe das Forum allerdings erst kürzlich neu aufgesetzt und verwende dazu eine utf-8_general_ci Datenbank. In der php.ini ist default_charset = "UTF-8" gesetzt. In der Spracheinstellung (AdminCP -> Sprachen & Phrasen -> Sprachen verwalten -> Sprache -> Einstellungen= ist UTF-8 angegeben. Letzteres dürfte eigentlich keinen Einfluss auf die Schreibweise der Umlaute in der URL haben. Sieht aber auf jeden Fall nach einem Problem mit der Codierung aus.

    Zu 2. Geht meines Wissens nicht.

    Zu 3. Die unnötigen Links lassen sich leicht über den Sitebuilder aus der -> Navigationsleiste entfernen. Den physischen Zugang zu den Seiten kannst du dann in der AdminCP unter Kanäle verwalten -> Kanalrechte beschränken. Löschen würde ich die Kanäle nicht. Vielleicht brauchst du sie später nochmal. Ginge aber auch in der Kanalverwaltung.

    Zu 4. Bei der Installation gibst du den Dateipfad zur Startseite des CMS an. Was dann im Forum an Kanälen ist, hat automatisch ein /forum vorangestellt. Das lässt sich wenn überhaupt, nur im Sitebuilder ändern, indem du das Temlplate bearbeitest und speicherst. Beim Speichern hast du Zugriff auf den Pfad. Ich rate aber aus eigener Erfahrung dringend davon ab, das zu ändern. Manche Seiten (z.B. der Kalender & Gruppen) funktionieren dann nicht mehr richtig.

    Comment


    • #3
      Tatsache. Für neue Foren ist das kein Problem...

      Bei uns ist jedoch alles auf UTF-8 gestellt. Wie könnte der Fehler behoben werden?
      tektorum.de
      archinoah.de
      Visionstudio

      Comment


      • #4
        Für die "Korrektur" der vBulletin eigenen Phrasen könnte ein kurzfristiges umstellen der HTML Character Set in der Sprache von utf-8 auf ISO8859-1 oder latin1 helfen. Das hat bei mir schon mal die Umlaute der Phrasen wieder korrigiert.
        Ein umstellen der nodes ist da wiederum eine andere Sache. Das sollte man mit einem Tool erledigen welches die Buchstaben entsprechend anpasst. Gibt es zu finden über google (Schon ewig her das ich das machen musste bzw. so hinbekommen habe das auch alles danach gepasst hat.)
        vBulletin-forum.de | Das deutschsprachige vBulletin 5 Forum! | Widgets, Mods und Anleitungen auf deutsch.
        Team online, Navbar UnreadCount, Moderation-Info, New: Show hook-positions, Auto-close Threads, Latest Likes, Top-Posters PRO

        Comment


        • #5
          Hatten das selbe Problem beim Umstieg von 3.7 auf VB5 vor geraumer Zeit.

          Die Datenbank musste vor dem Upgrade mit einem PHP Script auf UTF-8 umgestellt werden. Um die Links auf das Forum zu erhalten hatte ich einen "redirecter" in PHP geschrieben, der alte Links auf die neuen Links mit einem 301 umschreibt. Selbst heute kommen noch "alte" Links und das Script ist weiter aktiv. Hier kam hinzu, das wir VBSeo im Einsatz hatten und der Wegfall der alten Links einen Absturz bei Tante google bedeutet hätte.

          Auch wir haben Umlaute in den Forennamen; das kann in der Tabelle routenew korrigiert werden....


          Interne Links (in den Posts) wurden per SQL auf die neuen URLs umgebogen.

          Ein Umstieg ohne Verluste ist möglich, bedarf allerdings einer Menge Arbeit. Einfach Upgrade-Script drüber laufen lassen ist leider nicht...

          Übrigens ein Update-Schritt löscht eine Tabelle, aus der mann zur alten Node-Id die neue holen kann. Die unbedingt sichern, sonst ist ein Erzeugen der neuen URL aus der "Alten" nicht mehr möglich...

          Comment


          • #6
            Unser vB 3.8 Datenbank läuft bereits seit Jahren im UTF-8 Format, d.h. hier können wir nichts mehr machen.

            @AScherff Bei uns ist vBSEO nach wie vor im Einsatz, daher würden wir uns natürlich über Infos zu Umstellung freuen.
            Ist euer PHP Skript ein Plug-In zu vB5, dass für andere auch nutzbar wäre?

            Übrigens ein Update-Schritt löscht eine Tabelle, aus der mann zur alten Node-Id die neue holen kann. Die unbedingt sichern, sonst ist ein Erzeugen der neuen URL aus der "Alten" nicht mehr möglich...
            In vB 3 gab es keine Nodes - wann wird hier welche Tabelle gelöscht?

            Danke & Grüße

            tektorum.de
            archinoah.de
            Visionstudio

            Comment


            • #7
              Originally posted by Floezen View Post
              Unser vB 3.8 Datenbank läuft bereits seit Jahren im UTF-8 Format, d.h. hier können wir nichts mehr machen.
              Das ist gut, dann muss die Datenbank nicht konvertiert werden.

              Originally posted by Floezen View Post
              Ist euer PHP Skript ein Plug-In zu vB5, dass für andere auch nutzbar wäre?
              Es ist PHP, wird aber hart in die index.php eingebunden und fängt die URL ab um sie ggf. umzuwandeln. Korrekt "umgewandelte" URLs werden in eine Datenbankdatei eingetragen die damit als eine Art "cache" arbeitet.

              Das Script kann ich gern zur Verfügung stellen, muss allerdings an die individuellen Pfade und Foren und andere diverse Dinge angepasst werden.

              Das Script ist "quick and dirty" funktioniert aber bei uns seit Jahren TOP!

              Ich empfehle, die Umstellung auf einem Testsystem komplett durchzuziehen. Ich glaube ich habe damals gefühlt 100 x von Vorne ein Update gemacht, bis mein "Waschzettel" gestimmt hat. Eine VM mit einem Snapshot hilft da ungemein.

              Hier mal das Script, was wie beschrieben aber noch divers angepasst werden muss!
              PHP Code:
              <?php


              define
              ("db_server" 'localhost');
              define("db_benutzer" 'nutzer');
              define("db_passwort" 'pass');
              define("db" "DATABASE");

              define ('tableprefix','prefix');


              $db_connect mysqli_connect(db_serverdb_benutzerdb_passwortdb);
              if ( !
              $db_connect) {
                  include_once
              'DB.php'// Error MySQL not available
                  
              die ();
              }else{
                  
              $db_connect->query("SET NAMES 'utf8';");
                  
              $db_connect->set_charset('utf8');
              }

              $subforum='';
              $referer='';

              if (isset(
              $_SERVER['HTTP_REFERER']))$referer=mysqli_real_escape_string($db_connect,$_SERVER['HTTP_REFERER']);


              // Links zum alten Membermap
              $ruri='';
              if (isset(
              $_SERVER['REQUEST_URI']))$ruri=$_SERVER['REQUEST_URI'];
              if (
              strtoupper(substr($ruri,0,12)) == '/VBGOOGLEMAP'){
                
              header("HTTP/1.1 301 Moved Permanently");
                
              header("Location: https://URL to MAP");
                
              header("Connection: close");
                die();

              }  

              // Links vom alten Lexikon
              $ruri='';
              if (isset(
              $_SERVER['REQUEST_URI']))$ruri=$_SERVER['REQUEST_URI'];

              if (
              strtoupper(substr($ruri,0,10)) == '/VBGLOSSAR'){
                
              header("HTTP/1.1 301 Moved Permanently");
                if (isset(
              $_GET['item'])) {
                
              header("Location: https://LINK/".$_GET['item']."/");
              }else{
                
              header("Location: https://LINK/lexikon/");
              }
                
              header("Connection: close");
                die();
              }  

              // Links vom alten Lexikon
              if (strtoupper(substr($ruri,0,8)) == '/LEXIKON'){
                
              header("HTTP/1.1 301 Moved Permanently");
                
              header("Location: https://LINK/lexikon/");
                
              header("Connection: close");
                die();

              }  

              // Links vom alten Mediawiki
              $ruri='';
              if (isset(
              $_SERVER['REQUEST_URI']))$ruri=$_SERVER['REQUEST_URI'];
              if (
              strtoupper(substr($ruri,0,10)) == '/MEDIAWIKI'){
                
              header("HTTP/1.1 301 Moved Permanently");
                
              header("Location: https://LINK/lexikon/");
                
              header("Connection: close");
                die();

              }  

              // Bekannte URL ???
              if (isset($_SERVER['REDIRECT_URL'])){
                
              $r_url=mysqli_real_escape_string($db_connect,$_SERVER['REDIRECT_URL']);
                
              $cac=mysqli_query($db_connect,"SELECT * from redirect where url='$r_url'");
                if (
              mysqli_num_rows($cac)>0){
                
              $row=mysqli_fetch_assoc($cac);
                
              $nlink=  $row['new_url'];
               
              $lfd=$row['lfd'];
               
              $counter=$row['counter'] + 1;
                
              mysqli_query($db_connect,"update redirect set counter='$counter' where lfd='$lfd'")  ;
                
              header("HTTP/1.1 301 Moved Permanently");
                
              header("Location:".$nlink);
                
              header("Connection: close");
                die();
                }
                
              $subforum ='/'.GetBetween($r_url,'/','/').'/';
              }



              // post
              $h=str_replace('/','',$subforum);
              $h=intval(substr($h,0,8));
              if (
              $h >0){
                
              $a2=mysqli_query($db_connect,"SELECT threadid from ".tableprefix."post_copy where postid='$h'");
                if (
              mysqli_num_rows($a2)>0){
                  
              $oldmysqli_fetch_assoc($a2);
                  
              $old_id=$old['threadid'];  
                  
              $a2=mysqli_query($db_connect,"SELECT nodeid FROM ".tableprefix."thread_post where threadid='$old_id'");
                  if (
              mysqli_num_rows($a2)>0){
                    
              $row=mysqli_fetch_assoc($a2);
                    
              $nid=$row['nodeid'];

                  
              $a3=mysqli_query($db_connect,"SELECT routeid FROM ".tableprefix."node where nodeid='$nid'");
                  
              $row3=mysqli_fetch_assoc($a3);
                  
              $routeid=$row3['routeid'];


                    
              $rmysqli_fetch_assoc(mysqli_query($db_connect,"SELECT prefix FROM ".tableprefix."routenew where routeid='$routeid'"));
                    
              $nlink="https://URL/".$r['prefix'].'/'.$nid;



                    @
              mysqli_query($db_connect,"insert into redirect set url='$r_url', wann = now(), new_url='$nlink', referer='$referer'");
                    
              header("HTTP/1.1 301 Moved Permanently");
                    
              header("Location:".$nlink);
                    
              header("Connection: close");
                        die();
                  }
                }
              }




              //echo $subforum;
              $l_new='';
              switch (
              $subforum){
               case 
              '/members/':
                
              //  $l_new='/forum/xxxx/yyyy/';
                
              $h=str_replace('/members/','',$r_url);
                
              $h=str_replace('.html','',$h);

                
              $cac=mysqli_query($db_connect,"SELECT userid, username from ".tableprefix."user where username='$h'");
                if (
              mysqli_num_rows($cac)>0){

                
              $row=mysqli_fetch_assoc($cac);  

                
              $nlink="https://XXXXXX/member/".$row['userid'];
                @
              mysqli_query($db_connect,"insert into redirect set url='$r_url', wann = now(), new_url='$nlink', referer='$referer'");

                
              header("HTTP/1.1 301 Moved Permanently");
                
              header("Location:".$nlink);
                
              header("Connection: close");
                   die();

                }

                break;


                
              // hier die Foren
               
              case '/FORUM/':
                  
              $l_new='/forum/xxx/yyy/';
                break;
               case 
              '/geba-udetechnik/':
               case 
              '/gebaeudetechnik/':

                  
              $l_new='/forum/öffentlicher-bereich/gebäudetechnik/';
                break;
               case 
              '/1/':
               case 
              '/2/':
               case 
              '/3/':
                
              $l_new='/forum/supportforen'.$subforum;
                break;

               case 
              '/p1/':
               case 
              '/p2/':
                 
              $l_new='/forum/playground'.$subforum;
                break;
               case 
              '/special/':
                
              $redaktion =true;
                
              $thema=str_replace('/special/',''$r_url);
                
              $thema=trim(substr($thema,0,-1));
                if (
              substr($thema,0,15)=='private-message')$redaktion=false;
                if (
              substr($thema,0,7)=='reports')$redaktion=false;

                if(
              $redaktion==true){
                  
              $nlink='https://LINK/'.$thema;
                  @
              mysqli_query($db_connect,"insert into redirect set url='$r_url', wann = now(), new_url='$nlink', referer='$referer'");
                  
              header("HTTP/1.1 301 Moved Permanently");
                  
              header("Location:".$nlink);
                  
              header("Connection: close");
                  die();
                }
                break;

              }

              if (
              $l_new!=''){
                
              $n1=intval(substr(str_replace($subforum,'',$r_url),0,5));
                
              $a2=mysqli_query($db_connect,"SELECT nodeid, urlident FROM ".tableprefix."node where oldid='$n1' and urlident!=''");
                if (
              mysqli_num_rows($a2)>0){
                  
              $row=mysqli_fetch_assoc($a2);
                  
              $nid=$row['nodeid'];
                   
              $nlink="https://LINK".$l_new.$nid;
                }else{
                    
              // wenn kein fred angegeben war
                   
              $nlink="https://LINK".$l_new;
                }  

                @
              mysqli_query($db_connect,"insert into redirect set url='$r_url', wann = now(), new_url='$nlink', referer='$referer'");
               
              header("HTTP/1.1 301 Moved Permanently");
                  
              header("Location:".$nlink);
                
              header("Connection: close");
                  die();
              }

              function 
              GetBetween($content,$start,$end){
                  
              $r explode($start$content);
                  if (isset(
              $r[1])){
                      
              $r explode($end$r[1]);
                      return 
              $r[0];
                  }
                  return 
              '';
              }
              ?>
              Last edited by AScherff; Tue 3rd Oct '17, 2:57am.

              Comment

              Working...
              X