Mod Rewrite - Alte dateien auf neue umleiten

27o8

abgemeldet
2 Mai 2006
9.028
933
Moin,

ich habe meine seite immer mehr mit mod_rewrite bearbeitet, jetzt bin ich soweit fertig. Jedoch hat google jetzt meine Seiten in der etwas älteren version drin. Wie kann ich die dann auf die neuen umleiten?


Früher: https://www.joke-factory.de/witz-68.html
Jetzt: https://www.joke-factory.de/Was-ist-ein-Trabi-mit-einem-Taschenrechner-68.html

Weil wenn google jetzt die alten Dateien noch drin hat, und die neuen auch könnte es sein das es wegen doppelcontent "bestrafungen" gibt.

Wäre es eine gute Idee folgendes zu machen:
RewriteRule witz-(.*)\.html$ /redir.php?witz=$1
in der redir.php dann die neue Url generieren und auf diese umleiten? Oder geht das noch einfacher irgendwie?

Gruß
Gremlin
 
Schreib ne Rule für die alten seiten mit dem R flag

zb der link in google

h\ttp://www.domain.de/witz.php?id=3&site=home

RewriteRule ^witz\.php\?id=[0-9]&site=home$ https://www.domain.de/ [L,R=302]

bin mir net sicher ob die 302er umleitung für google geeignet ist aber so würde ich es machen
oder direkt mit dem Redirect modul und dort nen allgemeinen Redirect 302 https://www.domain.de/ machenaber das ist denke ich für deinen Fall nicht so geeignet.

Sorry für die textformatierung muss gleich los :roll:

und vergess nicht das [L] Flag zu setzen bei jeder rewriterule welche für das aktuelle die letzte ist, hast du bei deiner oberen vergessen ;)
 
Hi,

das mit den Weiterleitungscodes, das war mir auch wichtig :) hab es jetzt so gelöst:
RewriteRule witz-(.*)\.html$ /redir.php?witz=$1 [L,R=301]
so dann in der redir.php folgendes:

PHP:
<?php

/* Funktionen etc. */
 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: https://www.joke-factory.de/".macheurl($witz[text])."-".$witz['ID'].".html"); 
?>

So damit sollte google dann erst von witz-1000.html auf redir.php?witz=1000 kommen, dort gibts dann nochmal die Meldung Seite umgezogen mit weiterleitung auf die aktuelle https://www.joke-factory.de/Da-das-Ehepaar-einfach-keine-Kinder-1000.html

Gruß
Gremlin

Ps.: Das [L] hab ich wohl immer vergessen :-? aber danke für den hinweis, denke jetzt immer dran ;)
 
Dazu brauchst du doch aber die Datei nicht oder doch?? Schick doch mal nen alten link von deiner Seite dann kann man mal ne Rule schreiben. Es müsste doch auch anders machbar sein.
 
2x weiterleiten? ob das so gut ist? ich würde die weiterleitung nur in php machen und das mod_rewrite völlig transparent laufen lassen...
 
Dazu brauchst du doch aber die Datei nicht oder doch?? Schick doch mal nen alten link von deiner Seite dann kann man mal ne Rule schreiben. Es müsste doch auch anders machbar sein.

doch ich denke die brauche ich, weil der link der Datei z.B.
https://www.joke-factory.de/Wie-verdoppelt-man-den-Wert-des-Trabi-64.html

aus der Datenbank ausgelesen wird, (erste xxx Zeichen eines Witzes) dann mit einer funktion sonderzeichen etc. umgewandelt werden, und die id des witzes kommt hinten dran, früher war es ja nur:
https://www.joke-factory.de/witz-64.html

hmm ich muss also so oder so auf eine Datei umleiten, da ich ja in der htaccess nicht mit php arbeiten kann :)

Gruß
Gremlin
 
Jo ok wenn fürher nur ID war must du mit PHP Leiten. Aber wie ZeroCCC schon sagt zweimal ist schleicht.

Okay, aber nur auf Startseite wäre ja auch schlecht, da der User der über die SUMA kommt ja den Witz sehen will. Ich denke ich lass das mal drin, bis die neuen Seiten zum Teil drin sind, und dann kommt es auf die Startseite oder auf ne Seite wo steht der Witz ist nun unter xxx erreichbar.

Danke für die Hilfe :)

Gruß
Gremlin
 
Das wegen der Suma dachte ich mir auch schon, deswegen habsch des gar net erst angebracht. Es ist halt doof wenn man so umstellt da bleibt einem net viel Freiheit bei solchen Dingen. Alternative wäre ne Sitmap die Du von Google grabben lässt.
 
ich komm grade nicht ganz mit lass doch einfach das R=301 bei deiner rewriterule und schon ist es keine weiterleitung mehr. somit bekommt jeder, auch suchmaschinen, sofort die richtige weiterleitung... und nicht erst ne weiterleitung auf die eigentliche weiterleitung.