Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

"doppelte" weiterleitung mit mod_rewrite ??

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
danielsoft
PostRank 1
PostRank 1
Beiträge: 11
Registriert: 04.12.2004, 13:52

Beitrag von danielsoft » 04.12.2004, 14:10

Hallo,

habe eine kleine Frage zu mod_rewrite.
Ich benute dies schon einige Zeit auf meiner Homepage.
Nun habe ich die Namen (nicht physisch sondern die von mod_rewrite erzeugten) geändert. (alle "_" zu "-" geändert) Wie kann ich eine 302 Weiterleitung zu den neuen Seitennamen machen ??
Also ein Beispiel:
physische Datei: vacation-rental-search1000.php?land=zahl

alter rewrite name: irgendwas_vlzahl.html
RewriteRule ^(.*)?\-vl([0-9]+)(\.html?)$ vacation-rental-search1000.php?land=$2 [QSA]

neuer rewrite name: irgendwas-vlzahl.html
RewriteRule ^(.*)?\-vl([0-9]+)(\.html?)$ vacation-rental-search1000.php?land=$2 [QSA]

Also ich will jetzt aber alle alten namen (die mit "_" ) zu den neuen namen (die mit "-") mit 302 umleiten, diese dann aber natürlich intern auf die physische Datei.

Ist glaude ich ein gängiges Problem bei der umstellung von dateinamen.
Hat das schon mal jemand gemacht und kann mir einen Tipp geben?

Vielen Dank!

danielsoft

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Caterham
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 20.09.2004, 19:12

Beitrag von Caterham » 04.12.2004, 17:58

irgendwas_vlzahl.html --> irgendwas-vlzahl.html, Status aber 301 (permanent). Du musst parallel aber alle Links in deinem Dokument auch umstellen.

Code: Alles auswählen

RewriteRule ^(.+)_(.+)$ /$1-$2 [R=301,L]
--> zu empfehlen: www.modrewrite.de

Grüße
Robert

danielsoft
PostRank 1
PostRank 1
Beiträge: 11
Registriert: 04.12.2004, 13:52

Beitrag von danielsoft » 05.12.2004, 15:21

Hallo,

habe mich vielleicht mißverständlich ausgedrückt.

also die physische Seite sieht so aus: vacation-rental-search1000.php?land=23

der alte name der Seite war: Austria_vacation_rental_vl5.html
um das zu vacation-rental-search1000.php?land=23 umzuleiten ist klar.
geht etwa so: RewriteRule ^(.*)?\_vl([0-9]+)(\.html?)$ vacation-rental-search1000.php?land=$2 [QSA]

Jetzt will (habe) ich aber alle "_" zu "-" geändert.
und will diese Seite Austria_vacation_rental_vl5.html zu Austria-vacation-rental-vl5.html mit R=301 umleiten.
Diese Austria-vacation-rental-vl5.html dann aber weiter zu der physischen Datei.

Frage: Wie kann man erreichen, daß eben das Rewrite_mod 2 mal ausgeführt wird.

Eben so: erst Austria_vacation_rental_vl5.html zu Austria-vacation-rental-vl5.html mit R=301 und dann Austria-vacation-rental-vl5.html zu vacation-rental-search1000.php?land=23.

Weiß vielleicht einer Rat ??

Vielen Dank!

danielsoft

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


bull
PostRank 9
PostRank 9
Beiträge: 2166
Registriert: 20.09.2003, 20:57
Wohnort: Vèneto

Beitrag von bull » 05.12.2004, 15:23

Nach meinem bescheidenen Verständnis des Sachverhalts hat Caterham exakt diese Lösung schon gepostet...

danielsoft
PostRank 1
PostRank 1
Beiträge: 11
Registriert: 04.12.2004, 13:52

Beitrag von danielsoft » 05.12.2004, 15:29

Die Sache ist aber die, daß ich nicht weiß wie viele "_" im Dateinamen vorkommen ...

Werde das aber trotzdem mal ausprobieren.

Grüße!

Caterham
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 20.09.2004, 19:12

Beitrag von Caterham » 05.12.2004, 15:48

Die Sache ist aber die, daß ich nicht weiß wie viele "_" im Dateinamen vorkommen
Eine Art "suchen nach _ und ersetzen durch -"-Funktion lässt sich leider nicht so variabel mit mod_rewrite realisieren.

Du könntest aber - sofern ein _ in der URL vorkommt - an ein PHP-Script weiterleiten.

Code: Alles auswählen

RewriteRule ^(.+)_(.+)$ index.php [L]
Dort fragst du dann die URL ab und führst die Ersetzung mit PHP-Funktionen durch, schließlich wird per header: Location... der Besucher an die neue Adresse über einen redirect weitergeleitet. Achtung: Der Statuscode ist dann standardmäßig 302 (tempor.), per

Code: Alles auswählen

header("HTTP/1.1 301 Moved Permanently");
müsste der Statuscode dann überschrieben werden können (hoffe ich zumindest; wichtig für Suchmaschinen).

Gruß
Robert

bull
PostRank 9
PostRank 9
Beiträge: 2166
Registriert: 20.09.2003, 20:57
Wohnort: Vèneto

Beitrag von bull » 05.12.2004, 15:59

Code: Alles auswählen

RewriteCond %{REQUEST_URI} _
RewriteRule ^(.*)_(.*)\.html$ $1-$2.html [N]

RewriteRule ^(.*)-(.*)\.html$ $1-$2.html [R=301,L]

danielsoft
PostRank 1
PostRank 1
Beiträge: 11
Registriert: 04.12.2004, 13:52

Beitrag von danielsoft » 05.12.2004, 17:49

Hallo,

habe die Version mit dem umleiten durch die .php Datei gewählt.

Also die .htaccess sieht jetzt folgendermassen aus:

RewriteRule ^(.*)?_vl([0-9]+)(\.html?)$ umleitung.php [L]
RewriteRule ^(.*)?_vr([0-9]+)(\.html?)$ umleitung.php [L]
RewriteRule ^(.*)?_vs([0-9]+)(\.html?)$ umleitung.php [L]
RewriteRule ^(.*)?_l([0-9]+)(\.html?)$ umleitung.php [L]
RewriteRule ^(.*)?_r([0-9]+)(\.html?)$ umleitung.php [L]
RewriteRule ^(.*)?_s([0-9]+)(\.html?)$ umleitung.php [L]
RewriteRule ^(.*)?_o([0-9]+)(\.html?)$ umleitung.php [L]


RewriteRule ^(.*)?\-vl([0-9]+)(\.html?)$ vacation-rental-search1000.php?land=$2 [QSA,L]
RewriteRule ^(.*)?\-vr([0-9]+)(\.html?)$ vacation-rental-search1000.php?region=$2 [QSA,L]
RewriteRule ^(.*)?\-vs([0-9]+)(\.html?)$ vacation-rental-search1000.php?subregion=$2 [QSA,L]
RewriteRule ^(.*)?\-l([0-9]+)(\.html?)$ vacation-rental-search.php?land=$2 [QSA,L]
RewriteRule ^(.*)?\-r([0-9]+)(\.html?)$ vacation-rental-search.php?region=$2 [QSA,L]
RewriteRule ^(.*)?\-s([0-9]+)(\.html?)$ vacation-rental-search.php?subregion=$2 [QSA,L]
RewriteRule ^(.*)?\-o([0-9]+)(\.html?)$ vacation-rental.php?obj_nr=$2 [QSA,L]

Die Datei mit der Umleitung so:

<?php
include_once('einstellungen/url.php');
$datei_neu = str_replace("_", "-", substr($_SERVER[REQUEST_URI], strrpos($_SERVER[REQUEST_URI], "/")+1));
header("HTTP/1.1 301 Moved Permanently");
header ("Location: https://".url."/$datei_neu"); // Umleitung des Browsers
header("HTTP/1.1 301 Moved Permanently");
?>

Funktioniert erst mal ... frage mich aber, ob das von der Performance nicht noch besser geht.
Wann muß man denn den header("HTTP/1.1 301 Moved Permanently"); setzen?
Vor oder nach der Umleitung?

Vielen Dank für die Hilfe! :))

Caterham
PostRank 5
PostRank 5
Beiträge: 329
Registriert: 20.09.2004, 19:12

Beitrag von Caterham » 05.12.2004, 19:13

Wie du siehst, hat bull schon eine einfachere Lösung gepostet :wink:

Wenn, dann reicht auch die Regel

Code: Alles auswählen

RewriteRule ^&#40;.+&#41;_&#40;.+&#41;$ umleitung.php &#91;L&#93;
Der Statusheader müsste vor dem Locationheader stehen, da normalerweise nach dem Locationheader kein Code mehr interpretiert werden sollte.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag