PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RegExp: Fragezeichen wird falsch ausgegeben



R-Craven
21.06.2006, 10:19
Ich hab ein kleines Problem ... ich habe eine kurze Zeit auf meiner Website die URL-Codierung http://weblog.r-craven.de/post### benutzt. Nach einiger Zeit hat mir das nicht mehr gefallen und ich habe die Permalinks über Mod-Rewrite anders gestaltet.

Nun gibt es aber noch Seiten, die meine alte Linkstruktur benutzen. Damit diese auf der richtigen Seite landen und nicht bei einer 404-Seite, müsste die URL auf http://weblog.r-craven.de/?p=### umgeleitet werden. Dazu habe ich ein "RedirectMatch" in meine .htaccess geschrieben:


RedirectMatch permanent ^/post([0-9]{1,3}) http://weblog.r-craven.de/?p=$1

Dummerweise wird bei der Ziel-URL das Fragezeichen bei /?p mit der Zeichenkette %3f maskiert. Wie kann ich nun verhindern, dass dies passiert? Ich brauch da ein Fragezeichen und zwar unmaskiert ... kann mir jemand helfen?

Chocwise
22.06.2006, 10:47
Hmjo, ich hab mal irgendwann den Tipp bekommen [L,QSA] in der RewriteRule zu verwenden. Ich bin allerdings, seit ich den Tipp bekam, nie dazu gekommen es auszuprobieren, noch weiß ich wofür das Dingen gut ist. Ich weiß das [NC] zu beispiel, die RewriteRule unempfindlich für Groß und Kleinschreibung macht (No Case).
Bei [L,QSA] könnt ich mir vorstellen dass Q für Question Mark und A für Ampersand (&) steht. S?... kein Plan... Semicolon?
Well... probiers mal und erzähl uns von deinen Erfahrungen.

RedirectMatch permanent ^/post([0-9]{1,3}) http://weblog.r-craven.de/?p=$1 [L,QSA]
Und wenn du Info's übder den Sinn von [L,QSA] findest, immer her damit. Ich konnt mit Google nix finden außer Anwendungsbeispiele ohne Erklärungen.

Dingsi
22.06.2006, 13:05
QSA hängt AFAIK nur den Query-String an (Query String Append), falls einer übergeben wurde. Also falls du z.B. "foo.html" mit [QSA] auf "bar.php" umleitest, so wird "foo.html?qux" auf "bar.php?qux" umgeleitet. Da du den Query-String hier ja selber erstellen willst, weiß ich nicht ob das funktioniert, aber probieren geht wie wir alle wissen übers studieren. ^^

Ieks, ich sehe gerade:
'qsappend|QSA' (query string append)
This flag forces the rewrite engine to append a query string part of the substitution string to the existing string, instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.

Apache mod_rewrite doc (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html)Scheint genau das zu sein, was du brauchst. Du sollst das benutzen, wenn du mehr Daten hinzufügen willst. Klingt passend. ^^

R-Craven
22.06.2006, 21:58
Also bei RedirectMatch kann ich am Ende keine solchen Schalter anhängen, sonst bekomm ich einen 500er-Fehler. Und mit RewriteRule komm ich nicht wirklich zurecht ... da wirkt sich die Regel gar nicht auf die URL-Eingaben aus ... naja, muß ich noch weiter rumprobieren *g*

[edit] Hab grad über Google einen Eintrag (http://www.rubas.ch/forum/action-topic-topicnr-48-hilikeywords-a_x2x_0_x2x__x3x__x4x_.html) gefunden, der darauf hinweist, dass die fälschliche Maskierung des Fragezeichens wohl ein alter Apache-Fehler ist ... da muß ich wohl bei meinem Provider anfragen.