RSS | Impressum | Sitemap |
Profi-Ranking Suchmaschinenoptimierung

SEO Marketing Blog

.... googeln bis der Arzt kommt

Dass es sinnvoll sein kann, die index.php auf den Hauptordner um zu leiten, liegt daran, dass letztlich sonst zwei URLs vorhanden wären, die den selben Inhalt haben (Duplicate Content).
Die Umleitung von index.php auf / ist jedoch etwas komplizierter, als die meisten anderen Umleitungen, die man normalerweise so verwendet. Das Problem liegt daran, dass Apache intern in der Lage sein muss, die index.php auf zu rufen, sich intern aber auch an die .htaccess bzw. mod_rewrite Regeln hält.

ModRewrite index.php auf / umleiten

Da ich letztens darauf angesprochen wurde, ob ich nicht einen Code für die .htaccess wüsste, mit dem man die index.php per 301 auf / umleiten kann und ich sowas tatsächlich schon mal gemacht hatte, hab ich in meinen Projekten “geblättert” und eine solche .htaccess/mod_rewrite Lösung rausgesucht. Genauer genommen zwei.

Potentiell schädlich ist es, wenn sowohl die index.php bzw. index.html als auch der “Ordner” / einer Webseite von Google gefunden werden. Das ist Duplicate Content – ob nun ein Link darauf führt oder nicht, früher oder später kann es zufällig passieren, dass die Seite in den Index von Google rutscht und potentiell Schäden am Ranking verursacht. Wer auf Nummer Sicher gehen möchte – oder bereits Probleme hat -, dem sei geraten wo immer dies möglich ist, die Index-Seite auf / umzuleiten.

Bei den folgenden Beispielen muss das www.example.org noch durch eure Domain ersetzt werden.

Das ist aber garnicht so einfach, wie es erstmal klingen mag. Manch einer ist vielleicht schon mit Konstrukten wie

RewriteRule index.php http://www.example.org [L,R=301]

gescheitert.

Was passiert ist eigentlich simpel und leicht zu verstehen, wenn man sich anschaut, was die Software, die im Hintergrund arbeitet, tut. Aber das tut nicht jeder und das muss vor allem auch nicht jeder.

Apache selbst versucht, wenn / aufgerufen wird eine Datei index.html oder index.php o.ä. aufzurufen. Wenn ihm dies aber per .htaccess bzw. mod_rewrite verweigert wird und er stattdessen auf / umleiten soll, führt dies zu einer Endlosschleife.

GET /
Interner Aufruf index.php
301 Weiterleitung auf / 
GET /
…

Dies kann man aber umgehen. Der Trick dabei ist, dass man nicht nur prüft, welche Datei versucht wird auf zu rufen, sondern den Request selbst überprüft:
Variante 1:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.example.org/ [R=301,L]

Geprüft wird also das Request und zwar wird geprüft, dass das Request mit 3 bis 9 Grossbuchstaben beginnt (das sind die Zugriffsmethoden GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE und CONNECT – falls WebDAV unterstützt wird zusätzlich noch PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK) und danach /index.php HTTP/ steht.

Ein üblicher Request sieht so aus:

GET /index.php HTTP/1.1

Da wir uns über die vom Client verwendete HTTP-Version aber nicht wirklich im Klaren sein können, endet die Prüfung direkt nach dem letzten /.

Wenn das also zutrifft, wird index.php auf http://www.example.org/ weitergeleitet. Interne Aufrufe des Apache sehen natürlich nicht so aus und wir haben daher nicht das Problem der Endlosschleife.

Wem das zu kompliziert war, für den gibts das ganze auch noch in einfacher:

Variante 2:

RewriteCond %{IS_SUBREQ} false
RewriteRule ^/index\.php$ http://www.example.org/ [R=301,L]

Das prüft, ob es sich um ein Subrequest handelt, ist dies nicht der Fall, wird index.php umgeschrieben, ansonsten nicht.
Ich vermute, dass Variante 2 sicherer ist, da sie nicht auf den ClientRequest angewiesen ist. Außerdem könnte man darüber vermutlich auch allgemeinere Regeln definitern, mit denen es möglich wäre, mit einer Zeile alle bestehenden und noch entstehenden Unterordner mit umzuleiten. Allerdings konnte ich das bislang nicht testen und konnte mit der anderen Variante auch keine Probleme feststellen.


Andere Beiträge mit ähnlichen Inhalten, die Dich evtl. auch interessieren könnten:


Der Artikel " ModRewrite index.php auf / umleiten " enthält 469 Wörter.

Artikel mit verwandten Tags (Keywords, Suchbegriffe)
Tags: , ,


Am 10.06.09, 13:40 in Google SEO
von Xel veröffentlicht. RSS Feed für Kommentare.
Du kannst hier kommentieren oder hier per Trackback
von Deinem Blog aus "verewigen".
· Gelesen: 23526 · heute: 3


17 Kommentare zu "ModRewrite index.php auf / umleiten"

  • Wenn die Domain nicht selbst und zusätzlich die index.xxx angelinkt werden, stellte es eigentlich gar kein Problem dar, wenn die zwei erreichbar sind. Ich persönlich bin mehr der Fan davon die index.xxx im Notfall via Robots.txt auszusperren als mit Umleitungen zu arbeiten, die vielleicht hintendran das Programm ausknocken (WordPress, XT Commerce etc.)

  • Hatte ich mir bisher nie wirklich Gedanken gemacht, da mein Server von Haus aus ne interne Umleitung schalten kann, aber danke für den Hinweis, ich werde das demnächst mal bei mir testen.

    MfG

    Martin

  • 3. Riccardo

    Xel, warum nutzt Du ModRewrite index.php nicht auf Deiner eigenen Seite? Die …/index.php wird nicht umgeleitet und die … /index.html gibt eine 404-Fehlermeldung.

  • 4. Xel

    Martin, ich glaub du hast das falsch verstanden.

    Die “Interne Umleitung” funktioniert super – solange man nicht versucht example.org/index.php auf example.org/ per 301 weiter zu leiten.

    Aber wenn ich mit die SEOstartup anschaue, stelle ich fest, dass ich die sowohl mit ….de/ als auch mit ….de/index.php aufrufen kann und die index.php auch nicht per robots.txt ausgeschlossen ist.

    Im Gegenteil – bei dir ist es sogar “so schlimm”, dass sowohl index.php als auch index.html als auch / den selben Inhalt haben und du die index.html selber intern anlinkst.

    @Sporty Girl:
    Ja, das mit der robots.txt ist die Alternative.
    Mir ist es halt lieber, eine Seite tut was ich will, als dass ich Google sage, dass etwas nicht indiziert werden soll. Aber das ist natürlich Geschmackssache. Wenn die Software aus irgendwelchen Gründen damit nicht klarkommt muss man ihr das eben beibringen – aber da hab ich als Proggi natürlich einfach einen ganz anderen Blickwinkel.

    Ich hätte das jetzt auch garnicht ausgegraben, wenn ich nicht von einem SEO gefragt worden wäre, ob und wie man sowas machen kann.

    Ganz simpel kann man natürlich auch einfach / auf /index.xxx umleiten… aber ob das in anbetracht der externen Links, die ja alle auf / gehen werden sinnvoll ist… ich weiß nicht, glaub aber eher weniger.

  • 5. Xel

    Weil ich bislang nicht dazu gekommen bin – wie gesagt, ich wurde morgens angerufen, ob/wie sowas geht, hab das Problem gelöst und dachte es wär nen Artikel wert ;-)

    index.html => 404 ist ja nicht schädlich, da kein doppelter Inhalt
    index.php => ist nicht im Index und nicht verlinkt, insofern auch nicht so schlimm, auch wenn es potentiell gefährlich wäre, sobald jemand einen Link drauf setzt. Ist aber nur mein Blog, insofern eher unkritisch.

    Nebenbei erwähnt hab ich das “so schlimm” ja auch absichtlich in Anführungszeichen gesetzt. Es ist erstmal nicht wirklich dramatisch, aber sicherlich auch nicht optimal.

    Ich bin ja zur Zeit kein SEO – kann sich ja noch ändern -, hab aber trotzdem selber ein paar Seiten – die immer alle zu aktualisieren, nur weil ich eine neue Idee hab…

    Aber ich kann dir versprechen: Wenn ich ne neue Seite aufbaue und noch dran denke, bau ichs ein. Aber den Zweck, den der Artikel erfüllen sollte – für den nächsten der diese Lösung will leicht zu finden zu sein – denke ich egal wie erreicht zu haben.

  • 6. sascha

    Bei mir gibt es bei meinen Projekten (unterschiedlicher Webspace und Server) keine Endlosschleife bei dem Konstrukt:

    RewriteRule ^index.(.*)$ http://www.example.org/ [L,R=301]

    Wie kommt das? Der interne Aufruf geht wieder durch die htaccess?

  • Ist das wirklich empfehlenswert?

  • 8. Xel

    @sascha
    Ich hab auch Server, auf denen das super funktioniert (gerade getestet) aber auch welche, auf denen es eben die Schleife gibt.

    Worin genau der Unterschied ist, werde ich wohl nachtragen müssen, sobald ichs sicher weiß.
    Meine 1. vermutung wäre, dass es der Unterschied zwischen Apache 1 und Apache 2 ist – aber das ist jetzt wild spekuliert, da es der erste mir auffallende Unterschied zwischen zwei Servern ist, auf denen ichs gerade mit unterschiedlichem Ergebnis getestet hab (Apache 1 = Schleife, Apache 2 = keine Schleife).

    Gregor: ich würde sagen es ist wirklich empfehlenswert, dafür zu sorgen, dass deine Inhalte für Google nur auf einer URL existieren. Wie du das machst ist letztlich deine Sache.

  • 9. Nils

    @Sporty Girl: So nutzt Du aber die Links, die eventuell in Foren o.ä. natürlich gesetzt wurden, nicht optimal.

    Ich stand mit XT vor dem Problem und wollte von der /index.php auf / weiterleiten, Problem konnte dann mit diesem Code gelöst werden:

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/
    RewriteRule ^(.*)index\.php$ /$1 [R=301,L]

    Also genau, was Du als Variante 1 vorstellst.

    Viele Grüße
    Nils

  • Irgendwie hat die Benachrichtigungsfunktion hier leider nicht funktioniert :-( deswegen komme ich erst so spät zum antworten:

    @XEL: Ich mache es lieber mit der robots.txt, weil bei den Umleitungen meistens immer irgendwas gar nicht mehr funktionierte.

    @Nils: Das muss nicht sein, dass man falsch gesetzte Links damit nicht nutzt. Wenn man von vornherein intern die richtigen Links nutzt, dann können die von extern auch nicht falsch gesetzt werden. Woher soll denn ein User wissen, unter welcher index.xxx Version ich erreichbar bin, ich ich die selbst nicht anlinke? Ich habe meine internen Links alle auf / und nicht auf index.xxx ;-)

  • 11. Oliver

    Nicht übel. Ich habe kürzlich bei einem Shop sehr gute Erfahrungen mit dem “Canonical Tag” gemacht:

    index.html normal auf / umleiten, index.php mit rel=”canonical” versehen (href=”http://xxx.de/”). Links natürlich komplett auf Root verweisen lassen. Der PR der index.php ging zackig auf “0″, der Rank auf Root zurück.

    <?php } elseif ( basename($_SERVER['REQUEST_URI']) == "index.php" ) { ?>
    <link rel="canonical" href="http://xxx.xxx.de/&quot; />
    <?php } else { ?>

  • 12. Robert

    Das kann ich nur bestätigen, läuft eigentlich super :-)
    Schreibe auch grad eine neue Routine. Gibbs demnächst hier. gruz rob

  • 13. Silko

    Schöner Beitrag! Ich könnte solche Ausführungen noch für ganz andere Lösungen gebrauchen. ;)

    Was ich anmerken möchte, Google kommt mit der Existenz von /index.php, index.hmtl bestens zurecht. Sind wir mal ehrlich, das Vorhandensein allein ist doch einfach nur organisch. Es gibt unzählige Beispiele wo die Projekte dennoch wunderbar ranken.

    Gut wenn man es macht (kann ja nicht schaden) aber man sollte sich hier nicht allzu verrückt machen lassen..

  • 14. Serg

    Hallo,

    nach sowas hab ich die letzten Tage gesucht.
    Ich hab / und index.php beide im Index.
    Ich hab beides was hier empfohlen wurde probiert :
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.example.org/ [R=301,L]
    und
    RewriteCond %{IS_SUBREQ} false
    RewriteRule ^/index\.php$ http://www.example.org/ [R=301,L]

    passiert nichts, kein redirect.
    Ich würde gern fragen woran es noch liegen kann. Servereinstellungen?
    Vielen Dank

  • Hallo, möchte einfach mal bedancken für den posting
    hat mit sehr weiter geholfen mit der weiterleitung:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.example.org/ [R=301,L]
    Werde hier mal öffter vorbeischauen. :)

  • 16. Nadal

    Hallo!
    Ich habe eine zusätzliche Frage dazu. Wie kann ich ihm per mod rewrite klar machen, dass er statt domain.de/index.php lieber schreiben soll: domain.de/seo?

    Danke schon ma und lg aus Berlin

  • 17. Frank

    Hi,

    ich würde nie empfehlen die Startseite einer Domain weiter zu leiten!
    Ansonsten bei Variante 2 example.org/seo draus machen … die Zielseite /seo muss natürlich separat existieren ;-)


Deine Ideen zum Artikel: ModRewrite index.php auf / umleiten

Kommerzielle Werbung in Kommentaren ist diesem SEO Blog nicht erwünscht!


Entspannen Sie ... wir kümmern uns darum!
Profitieren auch Sie von unserem Google Ranking Know-How!
» Profi Ranking - Suchmaschinenoptimierung «