tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
16
ZUGRIFFE
635
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Hallo zusammen,

    ich habe eine SEO Forensoftware.
    Leider ist die schon etwas älter und der SEO Mod wird nicht mehr unterstützt, somit bin ich alleine darauf angewiesen mein Problem zu lösen

    Also es geht um folgendes:
    Nach dem Einbau des SEO Mods geht das Highlighting in einem Topic nicht mehr.
    Jetzt möchte ich das ganze wieder in die mod_rewrite URL mit aufnhehmen.
    Das Highlighting ist im QUellcode des FOrums eigentlich noch drin.

    Eine URL sieht z.B. so aus:
    http://www.xyz.de/xyz-t123.html
    Dazu die Regel:
    PHP-Code:
    RewriteRule ^.+-t([0-9]*).htmlviewtopic.php?t=$[L
    Das Highlighting soll so aussehen:
    http://www.xyz.de/xyz-t123-h-suchwort.html
    Wie müsste dann die Regel aussehen?
    so:
    PHP-Code:
    RewriteRule ^.+-t([0-9]*)-h-([a-zA-Z0-9]*).htmlviewtopic.php?t=$1&highlight=$[L
    Es sollen beliebig viele Zahlen und Buchstaben erlaubt sein für das Suchwort.

    Dank euch!
    queicherius bedankt sich. 

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    wie muss die URL denn aussehen, damit das Higlightning funktioniert und wie sieht sie aktuell aus?
     

  3. #3
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Also wenn ich die Suche ausführe, dann wird diese URL generiert:
    PHP-Code:
    viewtopic.php?t=9399&highlight=terrarium 
    Das wird automatisch aber umgeleitet zu
    PHP-Code:
    hallo-aus-ostfriesland-t9399.html 
    Jetzt habe ich schon im Quellcode einer Forendatei gesucht und dort entsprechende Änderungen gemacht, denn die Forensoftware schreibt im Normallfall URLS in denen highlight vorkommt nicht um, aber wenn ich z.B. den Link von oben nehme und ihn umschreibe nach:
    PHP-Code:
    xyz-t123-h-suchwort.html 
    kommt immer wieder ne Weiterleitung zu:
    PHP-Code:
    xyz-t123.html 
    und verschluckt das -h-suchwort.

    Hier mal noch die .htaccess:
    PHP-Code:
    RewriteEngine On
    RewriteCond 
    %{HTTP_HOST} !^www\.xyz\.de$ [NC]
    RewriteRule (.*)$ http://www.xyz/Forum/$1 [L,R=301]

    # Kategorien
    RewriteRule ^.+-c([0-9]+).htmlindex.php?c=$[L]

    # User
    RewriteRule ^.+-u([0-9]+).htmlprofile.php?mode=viewprofile&u=$[L]

    # Forum
    RewriteRule ^.+-f([0-9]+).htmlviewforum.php?f=$[L]
    RewriteRule ^.+-f([0-9]+)-s([0-9]+).htmlviewforum.php?f=$1&start=$[L]
    RewriteRule ^.+-f([0-9]+)-p([0-9]+)-s([0-9]+).htmlviewforum.php?f=$1&topicdays=$2&start=$[L]
    RewriteRule ^.+-f([0-9]+)-p([0-9]+).htmlviewforum.php?f=$1&topicdays=$[L]

    #topic
    RewriteRule ^.+-t([0-9]*).htmlviewtopic.php?t=$[L]
    RewriteRule ^.+-t([0-9]*)-h-([a-z]*).htmlviewtopic.php?t=$1&highlight=$[L]
    RewriteRule ^.+-t([0-9]*)-s([0-9]*).htmlviewtopic.php?t=$1&start=$[L]
    RewriteRule ^.+-t([0-9]*)desc.htmlviewtopic.php?t=$1&postorder=desc [L]
    RewriteRule ^.+-t([0-9]*)-p([0-9]*)-s([0-9]*).htmlviewtopic.php?t=$1&postdays=$2&postorder=asc&start=$[L]
    RewriteRule ^.+-t([0-9]*)-p([0-9]*)desc-s([0-9]*).htmlviewtopic.php?t=$1&postdays=$2&postorder=desc&start=$[L]
    RewriteRule ^.+-t([0-9]*)-p([0-9]*)desc.htmlviewtopic.php?t=$1&postdays=$2&postorder=desc [L]

    RewriteRule ^.+-t([0-9]*)-p([0-9]*).htmlviewtopic.php?t=$1&postdays=$2&postorder=asc&start=[L
     

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von PhoenixDH Beitrag anzeigen
    aber wenn ich z.B. den Link von oben nehme und ihn umschreibe nach:
    PHP-Code:
    xyz-t123-h-suchwort.html 
    Wie, womit schreibst du ihn um?
    Gibst du ihn direkt so in der Adresszeile des Browsers ein?
     

  5. #5
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Ja, zum testen, damit ich nicht gleich den SUchcode anpassen muss.
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Mmmh,

    also wenn dies:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www.xyz.de$ [NC]
    RewriteRule (.*)$ http://www.xyz/Forum/$1 [L,R=301]
     
    # Kategorien
    RewriteRule ^.+-c([0-9]+).html$ index.php?c=$1 [L]
     
    # User
    RewriteRule ^.+-u([0-9]+).html$ profile.php?mode=viewprofile&u=$1 [L]
     
    # Forum
    RewriteRule ^.+-f([0-9]+).html$ viewforum.php?f=$1 [L]
    RewriteRule ^.+-f([0-9]+)-s([0-9]+).html$ viewforum.php?f=$1&start=$2 [L]
    RewriteRule ^.+-f([0-9]+)-p([0-9]+)-s([0-9]+).html$ viewforum.php?f=$1&topicdays=$2&start=$3 [L]
    RewriteRule ^.+-f([0-9]+)-p([0-9]+).html$ viewforum.php?f=$1&topicdays=$2 [L]
     
    #topic
    RewriteRule ^.+-t([0-9]*).html$ viewtopic.php?t=$1 [L]
    RewriteRule ^.+-t([0-9]*)-h-([a-z]*).html$ viewtopic.php?t=$1&highlight=$2 [L]
    RewriteRule ^.+-t([0-9]*)-s([0-9]*).html$ viewtopic.php?t=$1&start=$2 [L]
    RewriteRule ^.+-t([0-9]*)desc.html$ viewtopic.php?t=$1&postorder=desc [L]
    RewriteRule ^.+-t([0-9]*)-p([0-9]*)-s([0-9]*).html$ viewtopic.php?t=$1&postdays=$2&postorder=asc&start=$3 [L]
    RewriteRule ^.+-t([0-9]*)-p([0-9]*)desc-s([0-9]*).html$ viewtopic.php?t=$1&postdays=$2&postorder=desc&start=$3 [L]
    RewriteRule ^.+-t([0-9]*)-p([0-9]*)desc.html$ viewtopic.php?t=$1&postdays=$2&postorder=desc [L]
     
    RewriteRule ^.+-t([0-9]*)-p([0-9]*).html$ viewtopic.php?t=$1&postdays=$2&postorder=asc&start=0 [L]

    ...die richtige und komplette .htaccess ist, dann kann ich darin nichts finden, was diese ungewollte Umleitung(Umschreibung) erklären würde.
     

  7. #7
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Ja, das ist die, ich kann dir ja mal noch den Part aus der PHP schicken:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
        if ( preg_match('#viewtopic.php\?t=#', $url) ) {
            $prg=str_replace("viewtopic.php?","",$url);
            parse_str($prg, $prg_output);
            $highlight = preg_match( '#highlight#', $url) || preg_match( '#vote#', $url) || preg_match( '#newest#', $url);
            if (!$highlight) {
                $sql = "SELECT topic_title
                FROM " . TOPICS_TABLE . "
                WHERE topic_id = '".$prg_output['t']."'";
                if ( !($result = $db->sql_query($sql)) ) {
                message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
                }
                if ( $row = $db->sql_fetchrow($result) ) {
                    $start= preg_match('#start=0#', $url);
                    $postdays = preg_match( '#postdays=0#', $url);
                    if ($start) {
                    $url = str_replace( 'viewtopic.php', '', $url );
                    $url = str_replace( 'start=0', '', $url );
                    }
                    if ($postdays) {
                        $url = str_replace( 'viewtopic.php', '', $url );
                        $url = str_replace( 'postdays=0', '', $url );
                    } else {
                        $url = str_replace( 'viewtopic.php', '', $url );
                    }
                    $url1 = strtr($url,array("?t="=>"-t","&"=>"","amp;"=>"","asc"=>"","start="=>"-s","postdays="=>"-p","postorder="=>""));
                    $url = urlencode(strtolower(str_replace($url_search, $url_replace, $row['topic_title'])));
                    $url .= $url1. ".html";
                }
            }
        }

    ALso ich werde da echt net schlau draus. Das oben ist der Originalcode, den ich schon geändert habe zu:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
        if ( preg_match('#viewtopic.php\?t=#', $url) ) {
            $prg=str_replace("viewtopic.php?","",$url);
            parse_str($prg, $prg_output);
            $highlight = preg_match( '#vote#', $url) || preg_match( '#newest#', $url);
            if (!$highlight) {
                $sql = "SELECT topic_title
                FROM " . TOPICS_TABLE . "
                WHERE topic_id = '".$prg_output['t']."'";
                if ( !($result = $db->sql_query($sql)) ) {
                message_die(GENERAL_ERROR, 'Could not obtain topic information', '', __LINE__, __FILE__, $sql);
                }
                if ( $row = $db->sql_fetchrow($result) ) {
                    $start= preg_match('#start=0#', $url);
                    $postdays = preg_match( '#postdays=0#', $url);
                    if ($start) {
                    $url = str_replace( 'viewtopic.php', '', $url );
                    $url = str_replace( 'start=0', '', $url );
                    }
                    if ($postdays) {
                        $url = str_replace( 'viewtopic.php', '', $url );
                        $url = str_replace( 'postdays=0', '', $url );
                    } else {
                        $url = str_replace( 'viewtopic.php', '', $url );
                    }
                    $url1 = strtr($url,array("?t="=>"-t","&"=>"","amp;"=>"","asc"=>"","start="=>"-s","postdays="=>"-p","postorder="=>"","highlight"=>"-h-"));
                    $url = urlencode(strtolower(str_replace($url_search, $url_replace, $row['topic_title'])));
                    $url .= $url1. ".html";
                }
            }
        }

    Ich müsste mich mal daran setzen in Ruhe die Woche.
    Denn das wird bemängelt, bei 3500 Usern und etlichen 10 000 Threads im Board sollte das schon klappen irgendwie.

    Edit:
    Wenn ich den Code so einbaue, werden die Links in den Suchergebnissen automatisch zu:
    http://www.xyz.de/xyz-t123-h-suchwort.html

    ABer wenn ich in den Suchergebnissen dfann auf nen Link klicke komme ich wieder hier raus:
    http://www.xyz.de/xyz-t123.html
    Geändert von PhoenixDH (07.03.10 um 17:34 Uhr)
     

  8. #8
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Ich habe hier noch ne Codestelle gefunden:
    PHP-Code:
    if ($vtopic AND $HTTP_GET_VARS['t']) {

        
    $keyurl=$page_title;

        
    $search = array( 'ú','ù''Ö''Ä''Ü''ö''ä''à''é''è''ü'' '".""'"'#''&''/','ß','+','€','§','$','%','?','!',':',';','[',']',',','´','`','*','°','(',')','²','³');

        
    $replace = array( 'u','u','oe''ae''ue''oe''ae''a''e''e''ue''-'""""'''-und-''-','ss','','euro','','','','','','','','','','','-','-','-','-','-','-','2','3');

        
    $keyurl=str_replace($search$replace"$keyurl");

        
    $keyurl strtolower($keyurl);

        
    $seite $_SERVER['REQUEST_URI'];

        if (
    strrpos($seite,'/') > 0)

        
    $seite substr($seitestrrpos($seite,'/'));

        
    $start=$HTTP_GET_VARS['start'];
        
    $high=$HTTP_GET_VARS['highlight'];

        
    $tid=$HTTP_GET_VARS['t'];

        if (
    $seite !="/$keyurl-t$tid.html" and $seite != "/$keyurl-t$tid-s$start.html") {

            
    header("HTTP/1.1 301 Moved Permanently");

        if (
    intval($start) > 0)

            
    header("Location: $keyurl-t$tid-s$start.html");

        else

            
    header("Location: $keyurl-t$tid.html");
        }



    Kann es auch damit zu tun haben?
     

  9. #9
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Kann es auch damit zu tun haben?
    Da würd ich 3 Schnitzel drauf wetten

    $start=$HTTP_GET_VARS['start'];
    $high=$HTTP_GET_VARS['highlight'];

    $tid=$HTTP_GET_VARS['t'];

    if ($seite !="/$keyurl-t$tid.html" and $seite != "/$keyurl-t$tid-s$start.html") {

    header("HTTP/1.1 301 Moved Permanently");

    if (intval($start) > 0)

    header("Location: $keyurl-t$tid-s$start.html");

    else

    header("Location: $keyurl-t$tid.html");
    }

    Dieser Code vergleicht den bereinigten Seitentitel mit der angefragten Adresse(rot markiert).
    Dieser Vergleich schlägt fehl, weil in der angeforderten Adresse noch das
    Code :
    1
    
    -h-suchwort
    drinnen ist, was im Seitentitel vermutlich nicht vorkommt.

    Du könntest versuchen, vor dem Vergleich aus der Variable $seite per RegExp diesen String zu entfernen.

    Alles in allem macht dieses SEO-Module jedoch einen ziemlich verworrenen Eindruck, es scheint sich selbst irgendwie im Kreise zu drehen.
     

  10. #10
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Hm, das verstehe ich net ganz!
    Könnte ich auch in deiner rot markierten Zeile das -h- mit aufnehmen?

    Ja, das ganze System ist schon ein paar Jahre alt, aber greifr zu arg ein das ich das umstellen könnte.
    Es gibt auch leider keinen Support mehr dazu, selbst die Entwicklerseite gibt es nicht mehr.

    ---------------------------

    Ich hab mal noch ein bisschen getestet, das hier würde klappen, aber ka ob das Sinn macht:
    $tid=$HTTP_GET_VARS['t'];
    $high=$HTTP_GET_VARS['highlight'];

    if ($seite !="/$keyurl-t$tid.html" and $seite != "/$keyurl-t$tid-s$start.html" and $seite != "/$keyurl-t$tid-h-$high.html") {

    header("HTTP/1.1 301 Moved Permanently");

    if (intval($start) > 0)

    header("Location: $keyurl-t$tid-s$start.html");

    elseif ($high != "")

    header("Location: $keyurl-t$tid-h-$high.html");


    else

    header("Location: $keyurl-t$tid.html");
    }
    Oder kann ich den Part auch ganz löschen?
    Geändert von PhoenixDH (07.03.10 um 21:55 Uhr)
     

  11. #11
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Das sollte hinhauen...allerdings nur, solange der start-Parameter nicht übergeben wird.
     

  12. #12
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Hi, klar, diesen Fall müsste ich natürlich noch aufnehmen!
    Ich werde auch mal kucken ob ich das nicht ganz rausnehmen kann.

    Aber ich glaube das war mal um DC zu vermeiden!

    Dank dir für deine Hilfe!

    --------

    So, hab jetzt alles realisiert.
    Eine Frage bleibt noch:
    Was benutze ich am besten für die htaccess Regel damit alle Zeichen abgefangen werden?
    Im Moment habe ich aus:
    Code :
    1
    
    RewriteRule ^.+-t([0-9]*)-h-([a-z]*).html$ viewtopic.php?t=$1&highlight=$2 [L]
    das gemacht:
    Code :
    1
    
    RewriteRule ^.+-t([0-9]*)-h-([^.+]*).html$ viewtopic.php?t=$1&highlight=$2 [L]

    Problem:
    Wenn ich mehrere Suchworte habe, dann werden die durch ein + verbunden, das ist da scheinbar nicht drin.
    Geändert von PhoenixDH (08.03.10 um 09:13 Uhr)
     

  13. #13
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Versuchs mal mit

    Code :
    1
    
    \S
    statt dem Punkt.
     

  14. #14
    PhoenixDH PhoenixDH ist offline Mitglied Platin
    Registriert seit
    Sep 2004
    Beiträge
    617
    Meinst du so:
    Code :
    1
    
    RewriteRule ^.+-t([0-9]*)-h-([^\S+]*).html$ viewtopic.php?t=$1&highlight=$2 [L]

    Wenn ja dann geht das auch net, dann werde ich auf die 404 Seite weitergeleitet wie vorher auch.
     

  15. #15
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ahso, nein

    Lass mal das Hütchen davor weg ^

    \S findet alle Zeichen, die kein Leerzeichen sind.

    Code :
    1
    
    RewriteRule ^.+-t([0-9]*)-h-(\S+).html$ viewtopic.php?t=$1&highlight=$2 [L]
     

Ähnliche Themen

  1. Problem mit mod_rewrite
    Von drakun im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 14.01.11, 19:20
  2. Problem bei Highlight Suche
    Von seltsammithut im Forum PHP
    Antworten: 3
    Letzter Beitrag: 17.06.08, 20:35
  3. Problem mit mod_rewrite
    Von Igäl im Forum Hosting & Webserver
    Antworten: 2
    Letzter Beitrag: 04.09.07, 19:17
  4. mod_rewrite problem
    Von h4dhunTer im Forum Hosting & Webserver
    Antworten: 0
    Letzter Beitrag: 18.10.05, 16:43
  5. Antworten: 6
    Letzter Beitrag: 23.03.03, 20:41