Trackback-URL bei WordPress per Javascript einblenden
Gerade habe ich entdeckt, dass bestimmte Seiten in meinem WordPress-Blog unter zwei verschiedenen URLs im Google-Index sind:
http://www.domain.de/blog/artikel und
http://www.domain.de/blog/artikel/trackback/
Da war er also, der gefürchtete “Duplicate Content”! Panik macht sich breit im Schwabenländle! Wie konnte das passieren? Ich habe doch peinlichst genau darauf geachtet, dass genau DAS nicht passiert?
Google und die robots.txt
Das Interessante dabei ist auch, dass in der robots.txt folgender Eintrag steht:
Disallow: /blog/*/trackback/$
Ignoriert Google bzw. der Googlebot also doch die robots.txt oder habe ich irgendwo einen Denkfehler? Falls jemand hierfür eine Erklärung hat, bitte in den Kommentaren posten!
WordPress und der 302 Redirect bei Trackbacks
Die Ursache für den Duplicate Content war aufgrund der auffälligen URL schnell gefunden. WordPress leitet bei der Funktion trackback_url() die URL des Trackbacks per 302 und nicht per 301 Redirect weiter.
Statuscode 301 bedeutet: Moved Permanently
W3C: “The requested resource has been assigned a new permanent URI and any future references to this resource SHOULD use one of the returned URIs.”
Statuscode 302 bedeutet: Found
W3C: “The requested resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client SHOULD continue to use the Request-URI for future requests.”
Wie also den Duplicate Content bekämpfen?
Im Prinzip sehe ich drei Lösungsansätze:
1. An der wp-trackback.php rumschrauben
Diese Lösung scheidet aufgrund der nicht gerade seltenen WordPress-Updates für mich aus.
2. URL einfach auf “nofollow” setzen
Wäre denkbar, aber erstens traue ich dem Ganzen nicht (siehe robots.txt) und zweitens ist es doch wieder ein überflüssiger Link, der dadurch nicht gewertet wird und “Linkpower verschwendet”.
3. Link mit Javascript maskieren und nur bei Bedarf einblenden
Dafür habe ich mich letztendlich entschieden. Das scheint mir die sicherste Variante zu sein (in Bezug auf Duplicate Content) und der Link ist ohnehin nur für einen kleinen Teil der Leser interessant.
Trackback-URL mit JQuery nachträglich einbinden
Wie sollte es anders sein, es kommt natürlich wieder JQuery zum Einsatz. Wie immer erst der Code, dann die Erklärung unten.
$(document).ready(function()
{
$(".trackbackInfo").append("<br>(<a href=\"\"
id=\"showTrackbackInfo\">Trackback-URL anzeigen</a>)");
$('#showTrackbackInfo').click(function()
{
var anchor = $("#showTrackbackInfo").text();
if(anchor == "Trackback-URL anzeigen")
{
var loc = window.location;
var pathName = loc.pathname.substring(0,
loc.pathname.lastIndexOf('/') + 1);
var url = loc.href.substring(0, loc.href.length -
((loc.pathname + loc.search + loc.hash).length -
pathName.length));
url += "trackback/";
var tbInfo = "<div id=\"trackbackUrl\">";
tbInfo += "<textarea name=\"name\" rows=\"2\" cols=\"60\">";
tbInfo += url;
tbInfo += "</textarea>";
tbInfo += "</div>";
$(".trackbackInfo").append(tbInfo);
$("#showTrackbackInfo").text("Trackback-URL ausblenden");
}
else
{
$("#trackbackUrl").remove();
$("#showTrackbackInfo").text("Trackback-URL anzeigen");
}
return false;
});
In Aktion könnt Ihr das Ganze direkt unter diesem Artikel finden.
Zuerst hänge ich an den bestehenden Absatz mit dem Klassennamen “trackbackInfo” den gewünschten Link an, der dann bei Bedarf die Trackback-Info anzeigt. Der Link erhält die ID “showTrackbackInfo”. Wenn auf diesen Link geklickt wird (Zeile 6), dann wird zunächst die URL des Artikels ermittelt (Zeile 12-17) und manuell ein “trackback/” angehängt (Zeile 18).
Die URL wird dann innerhalb einer Textarea (Zeile 20-24) angezeigt. Diese wird ebenfalls angehängt (Zeile 26). Zum Schluss wird noch der Anchortext des Links geändert in “Trackback-URL ausblenden” (Zeile 27). Dies dient zur Unterscheidung, falls der Link ein zweites Mal angeklickt wird. In diesem Fall wird der Infotext wieder entfernt (Zeile 31).
Jetzt sehen Suchmaschinen überhaupt keinen Link mehr und die Gefahr von Duplicate Content ist gebannt. Wer die Info braucht, erhält sie mit einem Mausklick. Klar ist dafür aktiviertes Javascript im Browser notwendig. Aber welcher Webmaster, der einen Blog administriert und einen Trackback setzen will, surft ohne Javascript?
verfasst von Michael am 7. August 2010 um 11:44
vorheriger Artikel: Mein Umstieg von Dreamweaver auf NetBeans
nächster Artikel: Erster Eindruck vom neuen KDE 4.5 unter openSUSE

