-
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:
Das Highlighting soll so aussehen:PHP-Code:RewriteRule ^.+-t([0-9]*).html$ viewtopic.php?t=$1 [L]
http://www.xyz.de/xyz-t123-h-suchwort.html
Wie müsste dann die Regel aussehen?
so:
Es sollen beliebig viele Zahlen und Buchstaben erlaubt sein für das Suchwort.PHP-Code:RewriteRule ^.+-t([0-9]*)-h-([a-zA-Z0-9]*).html$ viewtopic.php?t=$1&highlight=$2 [L]
Dank euch!
-
Moin,
wie muss die URL denn aussehen, damit das Higlightning funktioniert und wie sieht sie aktuell aus?
-
Also wenn ich die Suche ausführe, dann wird diese URL generiert:
Das wird automatisch aber umgeleitet zuPHP-Code:viewtopic.php?t=9399&highlight=terrarium
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:hallo-aus-ostfriesland-t9399.html
kommt immer wieder ne Weiterleitung zu:PHP-Code:xyz-t123-h-suchwort.html
und verschluckt das -h-suchwort.PHP-Code:xyz-t123.html
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]+).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]
-
-
Ja, zum testen, damit ich nicht gleich den SUchcode anpassen muss.
-
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.
-
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.htmlGeändert von PhoenixDH (07.03.10 um 17:34 Uhr)
-
Ich habe hier noch ne Codestelle gefunden:
Kann es auch damit zu tun haben?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($seite, strrpos($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");
}
}
-
Da würd ich 3 Schnitzel drauf wettenKann es auch damit zu tun haben?

$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
drinnen ist, was im Seitentitel vermutlich nicht vorkommt.Code :1
-h-suchwort
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.
-
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:
Oder kann ich den Part auch ganz löschen?$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");
}Geändert von PhoenixDH (07.03.10 um 21:55 Uhr)
-
Das sollte hinhauen...allerdings nur, solange der start-Parameter nicht übergeben wird.
-
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:
das gemacht:Code :1
RewriteRule ^.+-t([0-9]*)-h-([a-z]*).html$ viewtopic.php?t=$1&highlight=$2 [L]
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)
-
Versuchs mal mit
statt dem Punkt.Code :1
\S
-
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.
-
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
-
Problem mit mod_rewrite
Von drakun im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 14.01.11, 19:20 -
Problem bei Highlight Suche
Von seltsammithut im Forum PHPAntworten: 3Letzter Beitrag: 17.06.08, 20:35 -
Problem mit mod_rewrite
Von Igäl im Forum Hosting & WebserverAntworten: 2Letzter Beitrag: 04.09.07, 19:17 -
mod_rewrite problem
Von h4dhunTer im Forum Hosting & WebserverAntworten: 0Letzter Beitrag: 18.10.05, 16:43 -
highlight code wie in foren: problem?!
Von sam im Forum PHPAntworten: 6Letzter Beitrag: 23.03.03, 20:41



1Danke

Zitieren

Login





