• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Umschreiben von URLs

jeffglennfox

New member
Hallo,

ich möchte die Ergebnisse aus einer Datenbankanfrage (MYSQL) suchmaschienenfreudlich umwandeln und als Link verwenden. Dafür benutze ich folgende Funktion, die so erstmal nicht funktioniert:

HTML:
<html>
<head>

<script>

function deUmlaut(value,id){
  value = value.toLowerCase();
  value = value.replace(/ä/g, 'ae');
  value = value.replace(/ö/g, 'oe');
  value = value.replace(/ü/g, 'ue');
  value = value.replace(/ß/g, 'ss');
  value = value.replace(/ /g, '-');
  value = value.replace(/\./g, '');
  value = value.replace(/,/g, '');
  value = value.replace(/\(/g, '');
  value = value.replace(/\)/g, '');
  document.getElementById(id).childNodes.setAttribute('href','value');
}

</script>

</head>
<body>


<div id="demo"><a href="#" onclick="deUmlaut('www.äüö-umlaute.de,'demo');">test</a></div>


</body>
</html>

Hintergrund ist es , dass ich für die umschreiben der URLS keine serverseitige Technik benutzen möchte und die Links sollen eigentlich bereits vor dem Anklicken umgewandelt sein.


Ich steh da im Moment etwas auf dem Schlauch und würde mich über einen Tip für einen Lösungsansatz freuen.

Danke und Gruss

von Markus

- - - Aktualisiert - - -

Ich habe es selber gelöst, im Code oben fehlte ein Hochkomma. Nachfolgend die funktionierende Variante:

HTML:
<html>
<head>

<script>

function deUmlaut(id){
  var value = document.getElementById(id).getAttribute('href');
  value = value.toLowerCase();
  value = value.replace(/ä/g, 'ae');
  value = value.replace(/ö/g, 'oe');
  value = value.replace(/ü/g, 'ue');
  value = value.replace(/ß/g, 'ss');
  value = value.replace(/ /g, '-');
  value = value.replace(/\./g, '');
  value = value.replace(/,/g, '');
  value = value.replace(/\(/g, '');
  value = value.replace(/\)/g, '');
  document.getElementById(id).setAttribute('href','www.'+value+'.de');
}


</script>

</head>
<body>


<div id="demo"><a href="äüö-umlaute" id="link1" onclick="deUmlaut('link1');">test</a></div>


</body>
</html>

Jetzt bleibt nur noch die Frage, ob das für Google problematisch ist, wenn ich die Links erst nach dem onClick-Event umwandel. Weiß das jemand ?

Gruss

von Markus
 
Zuletzt bearbeitet:
Jetzt bleibt nur noch die Frage, ob das für Google problematisch ist, wenn ich die Links erst nach dem onClick-Event umwandel.
ich würde davon ausgehen, dass google das nicht schnackelt. es wäre sicherlich auch ein bisschen zu viel, wenn google auf allen webseiten erst mal das js ausführt bevor es die seite indiziert.

wieso machst du diese modifizierung nicht im backend anstatt im client? ohne dieses seltsame konstrukt? dann klappt es auch mit google. was versuchst du mit dem code eigentlich zu lösen.

Weiß das jemand ?
definitiv weiß das wahrscheinlich niemand außerhalb von google ;)
 
Die letzte Modifikation sah jetzt so aus:
HTML:
<html>
<head>

<script>

function deUmlaut(value) {

  value = value.toLowerCase();
  value = value.replace(/ä/g, 'ae');
  value = value.replace(/ö/g, 'oe');
  value = value.replace(/ü/g, 'ue');
  value = value.replace(/ß/g, 'ss');
  value = value.replace(/ /g, '-');
  value = value.replace(/\./g, '');
  value = value.replace(/\//g, '-');
  value = value.replace(/\)/g, '');
  value = value.replace(/\(/g, '');
  value = value.replace(/\)/g, '');
  return(value);

}


function rewriteUrl(id){

  var value = document.getElementById(id).getAttribute('href');
  value = value.split("/~");
  var str1 = deUmlaut(value[0]);
  var str2 = deUmlaut(value[1]);
  var str3 = deUmlaut(value[2]);
  var str4 = deUmlaut(value[3]);
  
  document.getElementById(id).setAttribute('href','http://www.beispielhafte-domain.de/'+str1+'/'+str2+'/'+str3+'/?'+str4);
}


</script>

</head>
<body>


<div id="demo"><a href="antikbörse/~52123/~rüdesheim/~id=23456789&site=1" id="link1" onclick="rewriteUrl('link1');">test</a></div>


</body>
</html>

Ich denke Du hast Recht, dass Google damit Probleme hat.

Was ich lösen möchte ist folgendes:

Ich möchte aus einer Veranstaltungsdatenbank die Termine auslesen und daraus einen SEO-freundlichen Link erzeugen, der Namen der Veranstaltung, PLZ und Ort enthält. Erstes und Letztes können SEO-unfreundliche Zeichen enthalten die ich entfernen möchte. Die Idee war, das clientseitig mit Javascript umzuwandeln und nicht mit PHP, weil ich denke dass die String-Funktionen über die Performance gehen. Wahrscheinlich werde ich in der DB nun noch zwei extra Spalten für den SEO-freundlichen Veranstaltungsnamen und Ort einfügen (die bei Terminerfassung gleich mit erzeugt und gespeichert werden). Aber so richtig froh bin ich nicht mit der Lösung.

Gruss

von Markus
 
Zuletzt bearbeitet:
Die Idee war, das clientseitig mit Javascript umzuwandeln und nicht mit PHP, weil ich denke dass die String-Funktionen über die Performance gehen.
über wieviele termine pro request reden wir?
ausserdem weißt du nicht, was du für einen client vor dir hast. ein raspi beispielsweise wird langsamer sein als ein browser auf einem 2000 euro desktop gaming pc. daher kritische sachen immer auf dem server ausführen!

Wahrscheinlich werde ich in der DB nun noch zwei extra Spalten für den SEO-freundlichen Veranstaltungsnamen und Ort einfügen (die bei Terminerfassung gleich mit erzeugt und gespeichert werden).
warum? mach doch den js code einfach in dein serverscript mit rein. da ist das 100 % richtig aufgehoben.
 
ok. aber frag ruhig nochmal, wenn du unsicher bist. gerade bei php sieht man manchmal vlt. nicht sofort, wo genau welcher code zu welcher zeit ausgeführt wird.
 
Zurück
Oben