Seite 1 von 2

mod_rewrite - Auswirkung auf Suma nach Umstellung - DC

Verfasst: 05.06.2008, 22:35
von testbild
Hallo,

ich beschäftige mich nun einige Tage mit mod_rewrite, um meine URL's zu verschönern. Das ist mir auch bisher sehr gut gelungen. Bevor ich nun aber anfange, die Änderungen von der Testumgebung auf das echte Projekt zu übertragen, wollte ich gern wissen, was ich gegen Duplicate Content machen kann.

Meine Fragen:

1. Bei Umstellung von dynam. URL's auf statische empfiehlt sich 301-Redirect. Ist das richtig?
2. Werden die alten URL's damit gleichzeitig von Google aus dem Index entfernt?
3. Muss ich sonst noch irgendwas beachten?

Vielen Dank schon mal!

Verfasst:
von

Verfasst: 06.06.2008, 05:44
von BennyDuck
Korekt!!!

Verfasst: 06.06.2008, 09:10
von Southmedia
1. Ja.
2. Ja.
3. Die internen und externen Links soweit möglich auf die neuen URLs umstellen.

Verfasst:
von

Verfasst: 06.06.2008, 09:26
von chrizz
@Southmedia:
wie willst du denn da die Weiterleitung machen? Bei mir beißt sie die Katze da immer in den Schwanz, weil er die statische URL zur dynamischen auflösen will, aber dann bei der dynamischen URL den 301 zur statischen hat?

irgendwie klappt das nämlich bei mir nciht :(

Verfasst: 06.06.2008, 09:39
von Southmedia
chrizz, versteh ich nicht ganz...

Verfasst: 06.06.2008, 10:32
von testbild
Vielen Dank erstmal für Eure Antworten. Wie gelingt es mir, dass Google mitzuteilen, dass die dynamischen URL's (externe Links) nicht mehr existieren und dass kein DC entsteht?

Meine Denkweise:

1. Alle internen Links werden von mir umgestellt und sind ja aufgrund der entsprechenden RewriteRule auch erreichbar. Das funktioniert.
2. Die externen Links z.B. im Google-Index sind noch die dynamsichen URL's und sind ebenfalls noch erreichbar.
3. Somit entstünde ja DC.
4. Also müsste ich jetzt wieder eine Regel erstellen, die von den dyn. URLs auf die statischen per 301 verweist? Ist das so richtig?

Wenn ja kann mir jemand mal anhand eines einfachen Beispiels die RewriteRules erklären, die ich dafür benötige?

Vielen Dank.

Verfasst: 06.06.2008, 10:41
von Southmedia
Ein Beispiel:

Code: Alles auswählen

RewriteCond %{REQUEST_URI} ^/blog/index.php
RewriteCond %{QUERY_STRING} ^tag=(.*)
RewriteRule index.php /blog/tag/%1/? [L,R=301]
Damit werden alle dynamischen URLs nach dem Schema "/blog/index.php?tag=xxx" auf neue statische URLs "/blog/tag/xxx/" weitergeleitet. Das muss mann dann entsprechend umbauen.

Verfasst: 06.06.2008, 10:46
von testbild
Vielen Dank, ich werde das gleich mal testen. Hoffe, ich schaffe das umzusetzen.

Verfasst: 06.06.2008, 11:12
von testbild
OK, ich denk, ich hab ein grundlegendes Problem:

- Die statische URL hat das Format /info_artikelname_artikelID.html
- Dynamsich sieht das so aus /artikel.php?id=xxx

Nun habe ich aber das Problem, wenn ich o.g. Regeln anwenden würde, ich ja über den QueryString nie den artikelnamen erhalte, der ja letztlich notwendig ist, um die stat. URL zu erzeugen. Gibts da ne Lösung? Sicher könnte ich dem QueryString den Artikelnamen hinzufügen, aber Google kennt ja nur die Links ohne ArtName. :crazyeyes:

Ist es eventuell sinnvoller alle Anfragen auf artikel.php per 301 auf die startseite zu verweisen, in der Hoffnung das nach und nach alle alten URLs aus dem Index verschwinden? Durch die interne Verlinkung würden dann ja die neuen URLs wieder in den Index aufgenommen werden.

Verfasst: 06.06.2008, 11:42
von Southmedia
Okay, das ist echt ein wenig doof. Per mod_rewrite lässt sich das kaum lösen, da du eben den artikelname aus der Datenbank brauchst.

Du kannst das selbe aber auch in der artikel.php erreichen. Mit PHP auslesen welche URL angefragt wurde ($_SERVER['REQUEST_URI'] oder ähnlich), wenn das "/artikel.php?id=xxx" ist anhand der ID aus der Datenbank den artikelname auslesen, URL zusammensetzen und per header(Location: xxx); darauf weiterleiten. Nur eben aufpassen, dass die Weiterleitung wirklich nur aufgerufen wird wenn wirklich die alte URL im Browser aufgerufen wird.

Verfasst: 06.06.2008, 13:21
von chrizz
Nur eben aufpassen, dass die Weiterleitung wirklich nur aufgerufen wird wenn wirklich die alte URL im Browser aufgerufen wird.
hm... ich glaube das wird des rätsels lösung sein... naja... am WE hab ich ja nen bisschen zeit, dann schau ich mir das mal an :)

Verfasst: 06.06.2008, 13:24
von Southmedia
chrizz, bei dem obigen mod_rewrite-Snippet kann das ja nivht der Fall sein, da dort explizit die Aufruf-URL geprüft wird.

Verfasst: 06.06.2008, 13:30
von chrizz
jeps... seh ich :) aber brauchst du nicht trotzdem noch ne Zeile, in der eben genau diese statische URL wieder aufgelöst wird? ach scheiße... wenn man die sachen nicht zur hand hat ist es schwer das zu erklären... ich such das nochmal raus... vielleicht hab ich dann das ding endlich mal verstanden...
cheers

Verfasst: 06.06.2008, 13:35
von Southmedia
Ich denke schon gar nicht mehr in 'statischen' URLs oder so. Es gibt alte URLs (in dem Beispiel index.php?tag=xxx) und neue URLs (im Beispiel /tag/xxx/) zwischen denen weitergeleitet werden muss. Ob /tag/xxx/ dann wiederum transparent auf die index.php geleitet wird, also deren Inhalt ausgibt, ist ja unrelevant.

Verfasst: 06.06.2008, 20:26
von testbild
Hallo Southmedia!

Vielen Dank für Deine Unterstützung. Ich habe alles wie von Dir beschrieben umsetzen können. D.h., ich habe auf die zusätzlichen Rules verzichtet / verzichten müssen und habe die einzelnen PHP-Dateien mit header(location:xxx) als 301 umgeleitet.

Nun bin ich mal gespannt, wie Google darauf reagiert. :robot:

Grüße :D