Seite 1 von 1
Mit mod rewrite Zahl umsetzen
Verfasst: 13.12.2009, 09:20
von sumacrusader
Hallo
ich habe folgendes Problem.
Ich möchte vorhandene URLs auf neue weiterleiten, also die URL Struktur ändern und dabei eine zahl ersetzen
die vorhanden URLs sehen so aus
domain/cat1/cat2-zahl/artikelname.html
die neue URL soll so aussehen
domain/cat1/cat2/artikelname-zahl.html
Ich habe mich schon durch die diversen Tutorials zu mod rewrite gewühlt, ich blicke es aber nicht. Wäre dankbar wenn mir jemand einen Tipp dazu geben könnte
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Re: Mit mod rewrite Zahl umsetzen
Verfasst: 13.12.2009, 11:10
von Mork vom Ork
sumacrusader hat geschrieben:Ich möchte vorhandene URLs auf neue weiterleiten, also die URL Struktur ändern und dabei eine zahl ersetzen
Du möchtest eine externe, für den Browser sichtbare Weiterleitung?
die vorhanden URLs sehen so aus
domain/cat1/cat2-zahl/artikelname.html
die neue URL soll so aussehen
domain/cat1/cat2/artikelname-zahl.html
In etwa so:
RedirectMatch permanent ^/
([^/]+)/
([^/]+)-
([0-9]+)/
(.+)\.html$ /
$1/
$2/
$4-
$3.html
^ Anfang des zu vergleichenden Textes
[^/]+ Ein oder mehrere (+) Zeichen, die kein Schrägstrich sind ([^/])
[0-9]+ Ein oder mehrere (+) Zeichen von 0 bis 9 ([0-9])
.+ Ein oder mehrere (+) Zeichen beliebiger Natur (.)
$ Ende des zu vergleichenden Textes
Die runden Klammern um die bunten Teile sorgen dafür, dass der jeweilige Inhalt gespeichert und im Ziel über die Variablen $1 bis $9 (in diesem Fall natürlich nur bis $4, da nur vier Klammern) abrufbar ist.
Ich habe mich schon durch die diversen Tutorials zu mod_rewrite gewühlt
Probiere ist mit Anleitungen zu PCRE (Perl-compatible Regular Expressions), das ist die Bibliothek, die unter anderem von mod_rewrite und mod_alias (RedirectMatch) für die Musteranalyse genutzt wird, zum Beispiel unter
https://docs.python.org/3.1/library/re. ... ion-syntax oder
https://de.php.net/manual/de/reference. ... syntax.php (beide leider nur auf Englisch). Am Ende von
https://en.wikipedia.org/wiki/PCRE findest du Windows-Hilfedateien dazu (auch auf Englisch).
PCRE bildet die Musteranalyse von Perl nach, die Perl-Dokumentation dazu findest du unter
https://perldoc.perl.org/perlre.html
Verfasst: 13.12.2009, 12:56
von sumacrusader
Danke Mork vom Ork, dass sieht schon sehr gut aus

ich werde es mal probieren.
Jetzt stellt sich noch die Frage ob ich das auch als 301 Umleitung mit
RewriteRule ^/([^/]+)/([^/]+)-([0-9]+)/(.+)\.html$ /$1/$2/$4-$3.html [R=301,L]
oder ist dieses RedirectMatch permanent identsich mit einer 301 Umleitung?
nochmal danke

Verfasst: 13.12.2009, 13:32
von sumacrusader
Das mit dem RedirectMatch permanent klappt nur jetzt habe ich das nächste Problem, manche URLs haben nur cat1
die sehen dann so aus
domain/cat1-zahl/artikelname.html
jetzt habe ich versucht das einfach entsprechend umzubauen
RedirectMatch permanent ^/([^/]+)-([0-9]+)/(.+)\.html$ /$1/$3-$2.html
die zeile habe ich zusätzlich eingefügt das mag er aber wohl nicht

Verfasst: 13.12.2009, 16:30
von Mork vom Ork
sumacrusader hat geschrieben:ist dieses RedirectMatch permanent identsich mit einer 301-Umleitung?
Nein, das ist nicht identisch, das
ist eine.
Eine „301-Umleitung“ wird vom Webserver mit der Zeile
HTTP/1.0 301 Moved Permanently angekündigt. Die 301 ist die Nummer der Meldung Moved Permanently, daher lässt sich bei RedirectMatch statt der Zahl 301 auch das Wort permanent als Argument übergeben. Am Ende kommt aber immer die gleiche, oben erwähnte Antwortzeile raus, auch wenn statt RedirectMatch RewriteRule mit Option [R=301] genutzt wird (oder PHP, ein CGI-Skript, …).
RedirectMatch schleppt gegenüber RewriteRule nicht die monströse mod_rewrite-Maschinerie mit sich, die zwar vieles ermöglicht, aber dann selbst für so einen kleinen Umbau noch fünf, sechs Arbeitsschritte benötigt. Von daher sind die Anweisungen Redirect bzw. RedirectMatch in solchen Fällen zu bevorzugen.
RedirectMatch permanent ^/([^/]+)-([0-9]+)/(.+)\.html$ /$1/$3-$2.html
die zeile habe ich zusätzlich eingefügt das mag er aber wohl nicht
Ich kann dich zumindest insofern beglückwünschen als dass sie hier tut, was sie soll. Was tut sie denn bei dir? Fehlermeldung? Bei welchen URLs? Wie sieht deine komplette .htaccess aus?
Verfasst: 13.12.2009, 16:46
von sumacrusader
nö da kommt keine fehlermeldung der leitet einfach auf die startseite um und sagt Seite nicht gefunden.
wie gesagt das soll ja so aussehen
domain/cat1-zahl/artikelname.html -> domain/cat1/artikelname-zahl.html
ich habe gedacht das geht so
RedirectMatch permanent ^/([^/]+)-([0-9]+)/(.+)\.html$ /$1/$3-$2.html
ich habe da nur einen Teil von dem redirect mit 2 cats weg gemacht, weil dein Code ja klappte, nur meiner funzt halt nicht