mod_rewrite Problem
Sven
- webserver
Hi,
ich muss folgende URLs umwandeln
www.domain.de/?/meine_datei.html
in
www.domain.de/meine_datei.html
RewriteRule ^(.*)/?/(.*) /$2 [R=301,L]
Hat eider nichts gebracht.
Jemand eine Idee?
Gruß Sven
Hi,
ich muss folgende URLs umwandeln
www.domain.de/?/meine_datei.html
in
www.domain.de/meine_datei.html
RewriteRule ^(.*)/?/(.*) /$2 [R=301,L]
Hat eider nichts gebracht.
RewriteRule betrachtet ausschließlich die path-Komponente der URL.
Wenn du auf den Query String matchen willst, musst du dazu eine vorgeschaltete RewriteCond nutzen.
MfG ChrisB
Hi,
ich muss folgende URLs umwandeln
www.domain.de/?/meine_datei.html
in
www.domain.de/meine_datei.html
RewriteRule ^(.*)/?/(.*) /$2 [R=301,L]
Wenn du auf den Query String matchen willst, musst du dazu eine vorgeschaltete
ich versteh' ja nicht wirklich etwas davon, aber ...
muss ein Query String nicht üblicherweise die Form "?[var]=[val]" haben (wobei mehrere Parameter-Werte-Paare mit einem '&' getrennt werden)?
Ist die vom OP angegebene ursprüngliche URL in der Form überhaupt eine gültige?
Und falls ja, müsste das '?' nicht escaped werden?
Gruß Gunther
@@Gunther:
nuqneH
muss ein Query String nicht üblicherweise die Form "?[var]=[val]" haben
Nein. [RFC3986 §3.4]
Key-Value-Paare sind üblich in Querys, aber nicht zwingend.
(wobei mehrere Parameter-Werte-Paare mit einem '&' getrennt werden)?
'&' ist üblich als Trennzeichen, aber ziemlich dumm. [HTML401 §B.2.2]
Qapla'
@@Gunnar, dedlfix, Sven:
nuqneH
Ich danke euch für die Erklärung(en) und hilfreichen Links - wieder etwas "schlauer" als vorher! ;-)
Besten Dank!
Gruß Gunther
Hi,
ich muss folgende URLs umwandeln
www.domain.de/?/meine_datei.html
in
www.domain.de/meine_datei.html
RewriteRule ^(.*)/?/(.*) /$2 [R=301,L]
Wenn du auf den Query String matchen willst, musst du dazu eine vorgeschaltete
ich versteh' ja nicht wirklich etwas davon, aber ...
muss ein Query String nicht üblicherweise die Form "?[var]=[val]" haben (wobei mehrere Parameter-Werte-Paare mit einem '&' getrennt werden)?Ist die vom OP angegebene ursprüngliche URL in der Form überhaupt eine gültige?
Und falls ja, müsste das '?' nicht escaped werden?Gruß Gunther
Hi,
das sind bereits per rewrite umgewandelte URLs.
das Problem ist halt das dass CMS geupdatet wurde und dieses diese art von URLs nicht mehr erkennt. Da google diese Links aber alle so aufgenommen hat, muss ich das umleiten.
Tach!
ich versteh' ja nicht wirklich etwas davon, aber ...
muss ein Query String nicht üblicherweise die Form "?[var]=[val]" haben (wobei mehrere Parameter-Werte-Paare mit einem '&' getrennt werden)?
Nein. Dass Querystrings üblicherweise so aussehen, liegt daran, dass Browser sie in der Form aus den Formularelementen generieren. Aber eine generelle Regel, wie der Querystring aufgebaut sein muss ist nicht definiert. Übrigens hat HTML 4.01 mal empfohen vom & wegzugehen auf auf das Semikolon ; umzusteigen, um Probleme mit dem Escaping (&entity;) zu umgehen. Aber das hat keiner ernsthaft befolgt, würde das doch viele bestehende Anwendungen behindern.
Ist die vom OP angegebene ursprüngliche URL in der Form überhaupt eine gültige?
Und falls ja, müsste das '?' nicht escaped werden?
Ja. Nein, kommt drauf an, ob das ? Datenbestandteil sein soll oder Querystring-Einleiter.
dedlfix.
Hi,
ich muss folgende URLs umwandeln
www.domain.de/?/meine_datei.html
in
www.domain.de/meine_datei.html
RewriteRule ^(.*)/?/(.*) /$2 [R=301,L]
Hat eider nichts gebracht.
RewriteRule betrachtet ausschließlich die path-Komponente der URL.
Wenn du auf den Query String matchen willst, musst du dazu eine vorgeschaltete RewriteCond nutzen.
MfG ChrisB
Hi,
hast Du einen Tip wie die RewriteCond aussehen muss?
Die Domain kann bis auf das /?/ so bleiben. Es muss halt nur aus www.domain.de/?/datei.html das werden www.domain.de/datei.html
Gruß Sven
@@Sven:
nuqneH
Wann immer du mit regulären Ausdrücken arbeitest, solltest du bedenken, dass ? eine Sonderbedeutung hat: /?
= /{0,1}
Wenn du also das Zeichen '?' meinst, muss es escapet werden: \?
Qapla'
@@Sven:
nuqneH
Wann immer du mit regulären Ausdrücken arbeitest, solltest du bedenken, dass ? eine Sonderbedeutung hat: /? = /{0,1}
Wenn du also das Zeichen '?' meinst, muss es escapet werden: ?
Qapla'
Hi,
ich hab es jetzt mal so versucht:
RewriteRule ^(.*)/?/(.*) http://www.domain.de/$1 [R=301,L]
oder so
RewriteRule ^(.*)/?/(.*) /$1 [R=301,L]
Leider klappt das so auch nicht.
Gruß Sven
Tach!
Wann immer du mit regulären Ausdrücken arbeitest, solltest du bedenken, dass ? eine Sonderbedeutung hat: /? = /{0,1}
Wenn du also das Zeichen '?' meinst, muss es escapet werden: ?
ich hab es jetzt mal so versucht:
Leider klappt das so auch nicht.
Wie ChrisB schon sagte, ist das ein Problem, das sich nicht mit einem regulären Ausdruck in RewriteRule allein lösen lässt. Da hilft auch kein Maskieren. Du musst den Querystring über RewriteCond ansprechen.
dedlfix.
Tach!
Wann immer du mit regulären Ausdrücken arbeitest, solltest du bedenken, dass ? eine Sonderbedeutung hat: /? = /{0,1}
Wenn du also das Zeichen '?' meinst, muss es escapet werden: ?
ich hab es jetzt mal so versucht:
Leider klappt das so auch nicht.Wie ChrisB schon sagte, ist das ein Problem, das sich nicht mit einem regulären Ausdruck in RewriteRule allein lösen lässt. Da hilft auch kein Maskieren. Du musst den Querystring über ansprechen.
dedlfix.
Hi,
ok klingt gut nur wie?
Mit RewriteCond hab ich noch nie was gemacht.
Gruß Sven
Om nah hoo pez nyeetz, Sven!
Bitte zitiere künftig nur das, worauf du dich konkret beziehst. Vollzitate sind hier weder notwendig noch erwünscht. Das Forum lässt sich so einstellen, dass der komplette Thread in einem Rutsch gelesen werden kann, so dass das Vollzitat nur stört.
Matthias
Tach!
ok klingt gut nur wie?
Mit RewriteCond hab ich noch nie was gemacht.
Nun, du fängst am besten an, die Dokumentation dazu zu lesen und suchst dir Beispiele. Wenn du etwas konkret nicht verstehst, dann frag bitte konkret nach.
dedlfix.