Weiterleitung mit Redirect 301

[QUOTE=j.geissler;27350] Führe ich nun die alte Url ("…store/displaystore.asp?sid=421") aus, so wird diese geaendert in “store/displaystore.asp/?sid=421”, sprich es wird ein “/” vor dem ? eingefügt.
Die gewünschte Seite wird darauf nicht angezeigt (“The specified URL cannot be found”).

Muss ich das “?” escapen beim Eintrag in oxseohistory?
[/QUOTE]

Was ist, wenn Du dieses Verhalten beim Einfügen in die SEO-History berücksichtigst, also nicht das originale “store/displaystore.asp?sid=421” eingibst, sondern “store/displaystore.asp/?sid=421”, was ja anscheinend der Webserver an Oxid durchreicht?

Grüße,
Achim

Hi Achim,

danke für die rasche Antwort. Hab ich gerade versucht, bringt leider auch nichts… :frowning:

Gruß Jens

Hi,

warum eigentlich “The specified URL cannot be found”?

Spricht Dein Oxid Englisch? // Edit: Sorry der Nachfrage - habs jetzt in Deinem Vorposting gesehen…

Oder ist das mod_rewrite so eingestellt, dass gar nicht Oxid angesprochen wird, sondern der Webserver selbst die Antwort gibt und nix findet?

Grüße,
A.

Hi oxal,

ja wie bereits erwähnt “spricht mein Oxid Englisch” (“Eingesetzt wird Oxid EE 4.2.0 mit Standardsprache Englisch (1).”) :slight_smile:

An der Einstellung von mod_rewrite habe ich nichts geaendert. Ich verstehe halt nicht, warum
"…store/custompage.asp?customid=306" zu
"…store/custompage.asp[B][U]/?[/U][/B]customid=306" wird

[B]Kann mir da bitte jemand weiterhelfen?[/B]
Die Migration der “Alt-Urls” des vorigen “Nicht-Oxid”-Shops auf die entsprechenden URLs des neuen Shops auf Oxid-Basis ist für unseren Kunden sehr wichtig.

Gruß Jens

Hi Jens,

die Rückmeldung mit dem frühen Slash ohne ?-Erweiterung ist vielleicht unbedeutend für das, was eigentlich stattfindet.

Vielleicht kannst Du ein Monitoring von mySQL einrichten und schauen, wie der tatsächliche select auf OXSEO und OXSEOHISTORY lautet.

Mit dem Debug-Mode 4 wird es wohl nicht gehen, weil Du ja keine Antwort erhältst, die den eigentlichen Prozess der URL-Auflösung widerspiegelt.

Grüße, Achim

Hi,

ich habe jetzt nochmals weitergeforscht. Ich befürchte es liegt an folgender RewriteRule in der .htaccess:

RewriteRule !(\.html|\/|\.jpg|\.css|\.pdf|\.doc|\.gif|\.png|\.js)$ %{REQUEST_URI}/ [R=301,L]

Diese sorgt dafür, dass
"…store/custompage.asp?customid=306" zu
"…store/custompage.asp/?customid=306" wird.

Die SEO URL, für welche in der oxseohistory-Tabelle nach einem entsprechenden Alternativ-Eintrag gesucht wird, wird im oxseodecoder.php (in _getParams()) noch mal verändert von
"store/custompage.asp/?customid=306" zu
"store/custompage.asp/"

Verantwortliche Zeile:

$sParams = preg_replace( '/\?.*/', '', $sRequest );

[B]Was nun?[/B]
Wie gesagt, ich muss dafür sorgen, dass die alten URLs (des vorherigen Shops der Domain) auf die entsprechenden Konstrukte (des jetzigen Oxid-Shop) verweisen…

  • Dankbar für jede Hilfe -
    Jens

Hallo zusammen,

ich habe folgendes Problem.

Durch Shop-Umstrukturierung habe ich weniger Kategorien und die Artikel aus den entfallenden Kategorien werden jetzt den übrigen zugeteilt.

Somit ändern sich die Kategorien- und Produkt-Urls.
Ich habe nun eine csv-Tabelle mit 2 Spalten (Neue Urls/Alte Urls) erstellt und habe ein Script geschrieben, um nicht jede Url (es sind 240) einzeln aufzuschreiben.
Aber anstatt [B]oxid[/B] aus der [B]oxarticles[/B]-tabelle, lese ich die [B]oxobjectid[/B] aus der [B]oxseourl[/B] -tabelle aus. Hier die Frage: sind diese zwei Werte gleich?

<?php
	$link = mysql_connect (' ', ' ', ' ');
		if (!$link) {
			die(mysql_error()); 
		}	
	mysql_select_db(' ') or die(mysql_error());
	
	$i = 0;
	
	$data = file('url.csv');
		foreach ($data as $key => $value)
		{
			$i++;
			$arr_value = explode(';', $value);
			
			$url_neu = $arr_value[0];
			$url_alt = $arr_value[1];
			
			$query = "SELECT OXOBJECTID, OXLANG FROM oxseo WHERE OXSEOURL = '".$url_neu."'";
			$result = mysql_query($query) or die($query .'<br/>'.mysql_error());
			
			echo "
<br />Zeile " . $i;
			
			while ($row = mysql_fetch_object($result))
			{
				echo " - OK!
<br />";
				
				$insert = "INSERT INTO oxseohistory (OXOBJECTID, OXIDENT, OXSHOPID, OXLANG, OXHITS, OXINSERT) VALUES ('".$row->OXOBJECTID."', MD5('".($url_alt)."'), 'oxbaseshop', '".$row->OXLANG."', 0, NOW() )";
				$insert_result = mysql_query($insert);
				
				if(!$insert_result) die("FAIL: " . mysql_error());
				echo "
" . $url_neu . ";" . $url_alt . ";" . $insert_result;
			} 
		}
	
?>

Leider Funktioniert die Weiterleitung nicht 100%. Ich werde zwar auf die richtige Seite geleitet, die Url im Browser bleibt jedoch die gleiche.

Kann mir bitte jemand helfen? Mache ich hier was flasch? Kann man die oxseourl dafür nicht verwenden?

Vielen DANK!!!

Muss das alte Thema mal ausgraben.

Die Umleitung aus dem Wiki funktioniert bestens.

Interresant wäre noch ob das die DB Geschwindigkeit beeinflusst wenn man mehrere 1000 Url`s umleitet.

Hallo,

Das kommt sicher auf die Anzahl der gleichzeitigen Zugriffe auf alle 1000 Artikel an :wink:

Gruß

Hallo Jens.

Ist schon etwas her mit deinem Post, aber ich stehe jetzt vor dem gleichen Problem.

Ich muss alte Links nach dem folgenden Schema in die oxseohistory importieren: MD5(‘product_info.php?products_id=1176/’). Also als Besonderheit das “?”

Wenn ich das dann per Insert importiere und ich dann den Link aufrufe zeigt er mir in der Fehlermeldung: Die angeforderte Seite ‘product_info.php/’ konnte nicht gefunden werden. Er macht also irgendwie aus dem “?” ein “/”.

Wie hast du das damals gelöst bekommen? Weiß sonst jemand Rat? Ich wollte morgen gerne live gehen und bin fast am verzweifeln. Danke für jede Hilfe.

Freundlicher Gruß
FRANK (Schorty)

Sorry, ich muss hier noch mal nerven und pushen.

Mein Programmierer wird heute um 20 Uhr den Shop live stellen und ich möchte unbedingt die alten Produktlinks aus meinem osc Shop sauber umgeleitet bekommen. Dafür bin ich nach der guten Anleitung von vikram vorgegangen und habe die oxseohistory mit den entspr. Daten gefüllt.

Mein osc Link sieht z.B. so aus: product_info.php?products_id=1176
Wenn ich dann die Umleitung teste, kommt aber “Die angeforderte Seite ‘product_info.php/’ konnte nicht gefunden werden.” Er macht also irgendwie aus dem “?” ein “/”.

Hat denn keiner von euch schon ein ähnlichen Fall gehabt. Migration von oscommerce zu oxid mit Umleitung der Produkturls auf die neuen produkte in der oxseohistory???

Bin für jeden Tipp dankbar.
Gruß FRANK

Hallo Frank,

schau mal, roland76 hat dazu mal etwas geschrieben, vielleicht hilft’s Dir:

Gruß

[QUOTE=Marco Steinhaeuser;44670]Hallo Frank,

schau mal, roland76 hat dazu mal etwas geschrieben, vielleicht hilft’s Dir:

Gruß[/QUOTE]

Hallo Marco. Danke für deine Antwort. Nach der Anleitung bin ich ja vorgegangen und scheitere nun kläglich :slight_smile: an den “?” in meinen alten Produktlinks.

[U]Noch mal kurz das Problem:[/U]
Ich muss alte Links nach dem folgenden Schema in die oxseohistory importieren: product_info.php?products_id=1176/ - Beachte die Besonderheit das “?” in der URL.

Der Insert Befehl, den ich mir dafür zusammen gebastelt habe sieht so aus:
INSERT INTO oxseohistory (OXOBJECTID, OXIDENT, OXSHOPID, OXLANG) VALUES (‘1a82688ce372b2dd3d392f04f5b0e87e’, MD5(‘product_info.php?products_id=1176/’), ‘oxbaseshop’, 0);

Wenn ich das dann per Insert importiere und ich dann den Link aufrufe zeigt er mir in der Fehlermeldung: Die angeforderte Seite ‘product_info.php/’ konnte nicht gefunden werden. Er macht also irgendwie aus dem “?” ein “/” und schneidet den Rest ab.

Wenn ich Roland76 mal erreichen könnte…
Gruß FRANK

Hallo Frank

Es ist schon einige Zeit her, als ich unsere URL’s aus dem osc-Shop für Oxid umgewandelt habe. Dadurch bin ich mir gar nicht mehr sicher, ob wir damals bereits optimierte URL’s hatten und das ?-Problem bei mir nicht aufgetreten ist. Eine Lösung dafür habe ich aktuell auch nicht und Zeit um es zu testen bleibt während dem Weihnachtsgeschäft leider nicht. Aktuell kann ich dir zu diesem Problem nicht helfen.

Gruss
Roland

Hallo Roland. Dann weiß ich zumindest Bescheid, dass ich da jetzt nicht mehr weiter warten muss. Danke für die Rückmeldung. Ich werde dann mal versuchen, dass dann alternativ über die htaccess zu lösen.

Gruß FRANK

Wie würde das mit Artikelkategorien funktionieren? Ich würde gerne ganz alte html Seiten auf die entsprechende aktuelle Shop-Kategorie umleiten. Könnte ich da einfach die SEO-URL für einsetzen? Sprich statt ‘bcf96ad6c453da8ca24a157dd1ca3612’ die SEO-URL?

‘‘INSERT INTO oxseohistory (OXOBJECTID, OXIDENT, OXSHOPID, OXLANG) VALUES (‘bcf96ad6c453da8ca24a157dd1ca3612’, MD5(‘meinalterproduktelink.php/’), ‘oxbaseshop’, 0);’’

Im Exchange gibt es von Fatchip ein Modul um Redirects zu erstellen. Kann dir dieses wärmstens empfehlen.

Wir haben Shopversion 4.2. Da funktioniert das Modul leider nicht.

Hallo zusammen,

ich habe eben die Weiterleitung über die oxseohistory, wie von roland76 im Tutorial beschrieben, eingerichtet. Funktioniert auch wunderbar, allerdings beim Überprüfen des Seitenaufrufs wird als Code ein 302 und KEIN 301 zurückgegeben. Hat sich hier etwas an der Kernfunktionalität geändert, oder Bedarf es einer weiteren Einstellung auf Backend- oder Server-Ebene?

Viele Grüße
Tobias Stemmler

Das hat Marco hier eingetragen, in den Comments steht der Bugfix der das verursacht hat: https://bugs.oxid-esales.com/view.php?id=5471