Magento: Standard Weiterleitung mit 302 ändern zu einer 301 Weiterleitung (SEO)

17. Januar 2013 at 10:30

Magento leitet interne Links per 302-Status-Code weiter. Das ist in Bezug auf Suchmaschinenoptimierung nicht gerade optimal, besser wäre eine 301-Weiterleitung.

Um das zu ändern sollte beim Aufruf der Funktion „_redirect“ jeweils als zweiten Parameter der korrekte Status-code „301“ mit gegeben werden, da ansonsten der Default-Parameter „302“ verwendet wird.

Siehe: /app/code/core/Mage/Core/Controller/Response/Http.php :

/**
* Additionally check for session messages in several domains case
*
* @param string $url
* @param int $code
* @return Mage_Core_Controller_Response_Http
*/
public function setRedirect($url, $code = 302)
{
/**
* Use single transport object instance
*/
if (self::$_transportObject === null) {
self::$_transportObject = new Varien_Object;
}
self::$_transportObject->setUrl($url);
self::$_transportObject->setCode($code);
Mage::dispatchEvent('controller_response_redirect',
array('response' => $this, 'transport' => self::$_transportObject));
return parent::setRedirect(self::$_transportObject->getUrl(), self::$_transportObject->getCode());
}

Um das über ein Magento-Event zu lösen, geht wie folgt vor:

Erstellt ein neues Module und erweitert die config.xml mit folgendem xml-snippet, z.B. in der /app/code/local/Neuesmodul/Cms/etc/config.xml

<global>
<events>
<cms_controller_router_match_before>
<observers>
<Neuesmodul_Cms_observer_cmsControllerRouterMatchBefore>
<type>singleton</type>
<class>neuesmodul_cms/observer</class>
<method>
cmsControllerRouterMatchBefore
</method>
</Neuesmodul_Cms_observer_cmsControllerRouterMatchBefore>
</observers>
</cms_controller_router_match_before>
</events>
</global>

in /app/code/local/Neuesmodul/Cms/Model/Observer.php fügt ihr die folgende Funktion  ein:

/*
* set 301-Http-Response-Code for redirection
*/
public function cmsControllerRouterMatchBefore(Varien_Event_Observer $observer)
{
$condition = $observer->getEvent()->getCondition();
if ($condition->getRedirectUrl()) {
Mage::app()->getFrontController()->getResponse()
->setRedirect($condition->getRedirectUrl(), 301)
->sendResponse()
->setDispatched(true);
}
}

Alternativ-Funktion

/*
 * set 301-Http-Response-Code for redirection
 */
 public function cmsControllerRouterMatchBefore(Varien_Event_Observer $observer)
 {
 $condition = $observer->getEvent()->getCondition();
if ($condition->getIdentifier()) {
 Mage::app()->getFrontController()->getResponse()
 ->setRedirect('/', 301)
 ->sendResponse()
 ->setDispatched(true);
die();
 }
 }

SEO optimierte 404-Fehler-Seiten in Magento – 404 error page in magento

21. März 2012 at 17:47

Bei der Migration / Relaunch eines bestehenden Webshops zu Magento oder bei Änderungen der Link-Struktur, Kategorien, CMS, etc. innerhalb Magentos, kann es beim Aufruf alter ungültiger Links zu einer 404-Fehlerseite kommen. Das ist weder für die Besucher, noch aus SEO-Gesichtspunkten optimal. Jeglicher Link-Juice würde so abhanden kommen, mögliche Käufer verschreckt, die Conversion sinkt unnötig.

Standardgemäß wird in Magento die unter Admin-Backend unter „System > Konfiguration > Web > Standardseiten > CMS keine Route Seite“  definierte Seite aufgerufen, allerdings wird dann bei einem Aufruf einer ungültigen Seite/URL der Header Statuscode 404 ausgeliefert. Hierdurch geht der Link-Juice auf diese Seite verloren was sich negativ auf das Google-Rankings auswirkt.

Eleganter ist es meiner Meinung nach, alle nicht mehr vorhandenen Seiten direkt per 301-Redirect, entweder auf die ermittelte (Unter-)Kategorie-Übersichtsseite, notfalls auf die Startseite weiter zu leiten.

Aus diesem Grund ist es notwendig den Magento eigenen NoRoute-Controller durch ein eigenes Modul zu überschreiben.

Die Magento noRouteAction befindet sich in der Klasse /app/code/core/Mage/Cms/controllers/IndexController.php .
Diese Klasse erweitern wir durch ein eigenes Module unter app/code/local/Fly2marsmedia/Redirect

Im Ordner „Redirect“ wird das Verzeichnis „etc“ und „controllers“ angelegt. Im Ordner „etc“ legt ihr die Datei config.xml an mit dem folgenden Inhalt:

<?xml version="1.0"?>
<config>
<modules>
<Fly2marsmedia_Cms>
<version>0.0.1</version>
</Fly2marsmedia_Cms>
</modules>
<frontend>
<routers>
<fly2marsmedia_cms>
<use>standard</use>
<args>
<module>Fly2marsmedia_Cms</module>
<frontName>redirect</frontName>
</args>
</fly2marsmedia_cms>
<cms>
<args>
<modules>
<Fly2marsmedia_Cms before="Mage_Cms">Fly2marsmedia_Cms</Fly2marsmedia_Cms>
</modules>
</args>
</cms>
</routers>
</frontend>
</config>

Anschließend legt ihr im Ordner /controllers die Datei IndexController.php mit folgendem Inhalt ab:

class Fly2marsmedia_Cms_IndexController extends Mage_Cms_IndexController
{
public function noRouteAction($coreRoute = null)
{
  $path = '/';
  $targetUrl = Mage::getUrl($path);
  if($targetUrl != '') {
  Mage::app()->getFrontController()
  ->getResponse()
  ->setRedirect($targetUrl, 301)
  ->sendResponse();
  exit();
}
return $this;
}
}

Final muss das Module noch aktiviert werden. Dazu im Ordner /app/etc/modules eine Datei Namens Fly2marsmedia_Redirect.xml mit folgendem Inhalt ablegen:

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Fly2marsmedia_Template>
<active>true</active>
<codePool>local</codePool>
</Fly2marsmedia_Template>
</modules>
</config>

Magento: Redirect Funktionen

20. August 2010 at 17:42

Die ReDirect Funktionen findet ihr in der Mage_Core_Controller_Varien_Action class.

/* Redirect to certain url  */
_redirectUrl($url)

/* Redirect to certain path */
_redirect($path, $arguments=array())

/* Redirect to success page */
_redirectSuccess($defaultUrl)

/* Redirect to error page */
_redirectError($defaultUrl)

/* Set referer url for redirect in response */
_redirectReferer($defaultUrl=null)

/*  Identify referer url via all accepted methods (HTTP_REFERER, regular or base64-encoded request param) */
_getRefererUrl()

/* Check url to be used as internal */
_isUrlInternal($url)

For redirect URL:
$url = "http://example.com";
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
For redirect with path and arguments:
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl($path, $arguments));

Google Leitpfaden für Suchmaschinenoptimierung (SEO) – Teil 1

6. November 2009 at 09:00

Hier eine Zusammenfassung der offiziellen Aussagen aus dem Webmaster Zentrale Blog bzw. des Google Verantwortlichen Matt Cutts für den Bereich Suchmaschinenoptimierung (SEO). – Teil 1

Sind Produktbeschreibungen auf E-Commerce-Seiten Duplicate Content, falls die gleichen Produktbeschreibungen auf anderen Seiten auftauchen? Dies passiert bei vielen Markenartikeln.

Google (Matt Cuts) sagt:

Man sollte sich fragen:
„Wo ist bei mir der Mehrwert? Was hat meine Affiliate-Site oder Site ohne eigenen Content an Mehrwert im Vergleich zu den hunderten anderer Sites?“

Wenn möglich, versucht eigenen Content zu erstellen und einen einzigartigen Mehrwert zu bieten. Nehmt nicht einfach einen Affiliate-Feed und schustert damit eine billige Site zusammen. Sowas möchte doch eigentlich niemand sehen. Im Allgemeinen ist es also am Besten, wenn ihr einen eigenen Blickwinkel bietet und nicht bloß genau das Gleiche, was alle anderen auch haben.

Quelle

Es scheint von geringer Bedeutung für Besucher zu sein, wo genau sich eine Seite innerhalb der Sitestruktur befindet. Ist es besser, Content-Seiten nahe an der Root zu platzieren, oder sollten sie in eine tiefere, Themen bezogene Struktur eingeordnet sein?

Google (Matt Cuts) sagt:

Dies ist kein SEO-Tipp. Dies ist ein rein praktischer, allgemeiner Tipp. Je weniger Klicks benoetigt werden,
um eine Seite von der Root aus zu erreichen, desto wahrscheinlicher ist es, dass Besucher sie finden. Falls jemand achtmal klicken muss, um die Registrierungsseite für eure Konferenz zu finden, anstatt sich gleich auf der Hauptseite registrieren zu können, dann werden weniger Leute diese durch so viele Klicks entfernte Seite finden.

Quelle

Wie genau geht Google beim Backlink-Check mit [link:…] vor? Werden alle Nofollow-Backlinks ausgefiltert oder warum zeigen Yahoo/MSN mehr Backlinks oder Ergebnisse?

Google (Matt Cuts) sagt:

Früher hatten wir nur für einen kleinen Anteil der Backlinks Platz, weil die Websuche im Mittelpunkt stand und wir nicht so viele Server für diese Link-Doppelpunkt-Anfragen hatten. Im Laufe der Zeit haben wir die Anzahl der Backlinks, die wir mit Link-Doppelpunkt anzeigen, stark vergrößert. Es ist aber immer noch nur ein Ausschnitt, ein relativ kleiner Anteil.

Quelle

Ist eine Website mit einem CSS-basierten Layout SEO-freundlicher als eine Site mit einem tabellenbasierten Layout?

Google (Matt Cuts) sagt:

Ich würde mir, ehrlich gesagt, nicht so viele Gedanken darüber machen.
Wir erkennen Tabellen, wir erkennen CSS – wir können mit beidem umgehen.
Wir versuchen beides zu bewerten, egal welche Art von Layout ihr nun verwendet.

Ich würde das nehmen, was für euch am besten funktioniert.

Quelle

Wenn man eingehende Links von Websites mit gutem Ruf kriegt, aber diese Websites nicht in einer Suche mit [link:webname.com] auftauchen, heißt das, dass aus der Perspektive von Google diese eingehenden Links nicht zählen?

Google (Matt Cuts) sagt:

Nein, das tut es nicht. Link-Doppelpunkt zeigt nur einen Ausschnitt, einen Teilausschnitt von den Backlinks, die wir kennen. Und es ist ein zufälliger Ausschnitt. Deshalb zeigen wir nicht nur die Backlinks mit hohem PageRank. Das haben wir früher so gemacht – und dann konnten alle mit PageRank 4 oder darunter ihre Backlinks nicht sehen, weil sie nicht als hoher PageRank zählten. Deshalb haben wir es fairer gestaltet, indem wir zufällig bestimmen, welche Backlinks wir zeigen.

Quelle

Wie mit ungewollten Links Umgehen (schlechte Nachbarschaft)

Google (Matt Cuts) sagt:

Falls eure Site von dubiosen Quellen angelinkt wird, besteht kein Grund zur Panik… lest einfach weiter!

Es trifft zu, dass Verlinkung für den Google-Algorithmus eine sehr wichtige Rolle spielt, allerdings ist es nur einer von vielen Faktoren. Hochwertige Inhalte – wir sagen das sehr oft und gern – und nützliche Tools oder Services spielen eine große Rolle. Die Struktur der Website, zum Beispiel das Vorkommen von Keywords im Seitentitel oder die Keyword-Dichte einer Seite, ist ein weiterer Faktor. Wenn ihr also seht, dass eine Website von schlechter Qualität zu eurer Site linkt, dann denkt auch daran, dass es neben Links noch viele andere Kriterien gibt, die dazu beiträgen, wie Google eine Website bewertet. Aus der Perspektive der User sind regelmäßige Aktualisierungen und guter Contet die ausschlaggebenden Dinge.

Quelle

Frage: Wird Anchor-Text durch alle 301-Weiterleitungen übernommen? Gibt es eine Penalty für Websites, die beim Linkaufbau nur darauf setzen?

Google (Matt Cuts) sagt:

Normalerweise wird der Anchor-Text übernommen, wenn eine 301-Weiterleitung stattfindet, aber wir versprechen nicht, dass dies jedesmal geschieht.

Die Frage ist ja: wird er immer übernommen? Nicht unbedingt. Wir behalten uns das Recht vor, nicht nur Links zu werten und wie wir die Bedeutung und den Trust von Links bestimmen, sondern ebenso den Trust, den wir Redirects zuordnen. Ich kann verraten, dass, falls ihr beim Linkaufbau nur auf 301-Redirects setzt, das ziemlich auffällig ist, weil wir alle Redirects, die uns unterkommen, loggen, genauso wie wir alle Links loggen.

Quelle

Was ist deine Meinung zu ‚PR-Sculpting‘ (also PR-Formung)? Nützlich und zu empfehlen, falls richtig gemacht oder doch unmoralisch?

Google (Matt Cuts) sagt:

Nun, ich würde nicht sagen, dass es unmoralisch ist, denn es ist ja alles auf eurer Website – ihr könnt natürlich bestimmen, wie der PR innerhalb eurer Site fließen soll. Ich würde sagen, dies ist nicht das Erste, an dem ich arbeiten würde.
Ich würde daran arbeiten, mehr Links zu bekommen und hochwertigen Content zu bieten – das sind immer die Dinge, die ihr als Erstes beachten solltet. Aber wenn ihr bereits einen bestimmten Stand an PR erreicht habt, dann könnt ihr natürlich daran arbeiten, den PageRank zu „formen“.

Quelle

Betrachtet Google das Yahoo!-Verzeichnis oder Best of the Web als Quellen bezahlter Links? Falls nicht, weshalb ist dies dann anders als bei anderen Sites, die Links verkaufen?

Gute Redaktionell betreute Verzeichnisse wie z.B. beim Yahoo!-Verzeichnis, wo Einträge auch abgelehnt werden, ist ein Eintrag durch aus positiv. Verzeichnisse wo Einträge bezahlt werden müssen, eher negativ weil deren Mehrwert für den Benutzer geringer ist.

„Wann immer wir danach schauen, ob ein Verzeichnis nützlich für User ist, fragen wir uns, o.k., was ist der eigentliche Nutzen dieses Verzeichnisses.“

Quelle

Content oder Links? Was ist wichtiger?

Google (Matt Cuts) sagt:

Googles Algorithmus wird ständig weiterentwickelt. Ist es da besser, außergewöhnliche Links und mittelmäßigen Content zu haben oder außergewöhnlichen Content und mittelmäßige Links?

Guter Content muss die Grundlage jeder guten Website sein, weil mittelmäßiger Content eben keine außergewöhnlich guten Links anzieht, und wer versucht solche Links für wirklich schlechten Content zu gewinnen, macht es sich echt schwer. Ihr würdet zu Techniken greifen müssen, die wir als anrüchig oder schlecht fürs Web halten: beispielsweise Linkkauf.
Deshalb ist es viel besser, guten Content zu erstellen, um diese Links auf natürliche Art und Weise zu erhalten und so beides zu haben: guten Content und dadurch gute Links.

Quelle

Welches Suchmedium liefert verlässlichere Ergebnisse: Google oder Twitter?

Google (Matt Cuts) sagt:

Twitter ist toll, um Nachrichten in Echtzeit zu erfahren und fantastisch, um Fragen an eure Freunde zu stellen. Und in Google versuchen wir hingegen, wirklich verlässliche und seriöse Informationen zu liefern. Wenn ihr also nach dem Datum sortiert, dann ist Twitter fantastisch.
Wenn ihr eine Antwort auf eine Frage sucht, die seit einiger Zeit besteht, dann ist Google großartig dafür.

Quelle

Hier geht es weiter zu Teil 2

Sie Benötigen Unterstützung bei der Optimierung (SEO) Ihrer Webseite bzw. Optimierung der Inhalte?

Fly2Mars-Media unterstützt Sie bei der Optimierung (SEO) Ihrer Webseite nach den gängigen Google Webmaster Richtlinien, sowie bei der Optimierung der Inhalte. Für ein individuelles Angebot nehmen Sie noch heute Kontakt mit uns auf.

Mit mod_rewrite das www hinzufügen oder löschen

14. Oktober 2009 at 13:11

Um doppelten Inhalt auf verschiedenen Domains zu vermeiden ist es ratsam, sich auf eine Domain zu beschränken.
Dabei ist zu beachten dass die Domain „www.fly2mars-media.de“ nicht gleich „fly2mars-media.de“ ist.

Das „www“ am Anfang ist eine Subdomain, die in früheren Zeiten des Internets anzeigen sollte, daß der WorldWideWeb Teil der Domain aufgerufen werden soll, im Gegensatz zu z.B. ftp / gopher / irc usw. In der heutigen Zeit ist dies hinfällig, aber viele Websurfer sind es immer noch gewohnt, stur das „www“ vor die Domain zu tippen.

Auch eine Subdomain gilt für Suchmaschinen als eigenständige Domain und wird ggf. negativ in Bezug auf Doppelten Inhalt (Duplicate Content) gewertet.

Um die Domain auf eine der beiden Möglichkeiten zu beschränken und die Besucher auf diese weiter zu leiten, kann man sich des mod_rewrite Moduls vom Apache bedienen. Dazu wird einfach eine Datei .htaccess im Hauptordner der Webpräsenz (Document Root) anlegen und einen der folgenden Code-Zeilen  einfügen.

per .htaccess-file:

RewriteCond %{HTTP_HOST} !^www\.fly2mars-media\.de [NC]
RewriteRule ^(.*)$ http://www.fly2mars-media.de/$1 [L,R=301]

Weiterleitung aller ankommenden Anfragen auf eine www-Domain:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.meine-domain\.de$
RewriteRule ^(.*)$ http://www.meine-domain.de/$1 [L,R=301]
</IfModule>

Weiterleitung aller www-Domains auf ihr Nicht-www Pendant:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
</IfModule>

Weiterleitung aller Nicht-www Domains auf ihr www-Pendant:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*)$
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
</IfModule>

Eine Weiterleitung ist auch über PHP möglich, sollte aus irgend welch Gründen eine Weiterleitung über mod_rewrite nicht möglich sein, so realisiert ihr das über PHP wie folgt (mod_rewrite Variante ist klar vorzuziehen!!!):

if ( $_SERVER['HTTP_HOST'] == 'projekt.de' ) {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.projekt.de");
exit;
 }