mod_rewrite-Regel zum Erzwingen der kanonischen Prozentcodierung

Wir haben eine PHP-App mit einem dynamischen URL-Schema, bei dem Zeichen in Prozent codiert werden müssen, auch " nicht reservierte Zeichen "wie Klammern oder Aphostrophe, die eigentlich nicht verschlüsselt werden müssen. URLs, die die App als" falsch "verschlüsselt ansieht, werden kanonisiert und dann in die" richtige "Kodierung umgeleitet.

Aber Google und andere Benutzerprogramme können die prozentuale Kodierung / Dekodierung unterschiedlich einstellen. Dies bedeutet, dass Googlebot die Seite nach der "falschen" URL fragt und die Weiterleitung zur "richtigen" URL ablehnt Folgen Sie der Umleitung und lehnen Sie die Indizierung der Seite ab.

Ja, das ist ein Bug auf unserer Seite. Die HTTP-Spezifikationen erfordern, dass Server nicht reservierte Zeichen mit und ohne Prozentcodierung identisch behandeln. Die Behebung des Problems im App-Code ist derzeit jedoch nicht einfach. Daher wollte ich eine Codeänderung vermeiden, indem ich eine Apache-Umschreiberegel verwende, mit der sichergestellt wird, dass URLs aus Sicht der App "richtig" codiert werden Dies bedeutet, dass Apopstrophen, Klammern usw. alle in Prozent codiert sind und Leerzeichen als @ codiert sin+ und nicht%20.

Hier ist ein Beispiel, in dem ich das erste Formular umschreiben und mit dem zweiten Formular enden möchte:

www.splunkbase.com / apps / All / 4.x / Add-On / app: OPSEC + LEA + für + Check + Point + (Linux) www.splunkbase.com / apps / All / 4.x / Add-On / app: OPSEC + LEA + für + Check + Point +% 28Linux% 29

Hier ist ein anderes

www.splunkbase.com / apps / All / 4.x / app: Benfords + Gesetz + Betrug + Aufdeckung + Add-on www.splunkbase.com / apps / All / 4.x / app: Benford% 27s + Recht + Betrug + Aufdeckung + Add-on

Hier ist ein anderes

www.splunkbase.com / apps / All / 4.x / app: Benford% 27s% 20Law% 20Fraud% 20Detection% 20Add-on www.splunkbase.com / apps / All / 4.x / app: Benford% 27s + Recht + Betrug + Aufdeckung + Add-on

Wenn die App nur die zweite Form dieser URLs sieht, werden keine Weiterleitungen gesendet, und Google kann die Seite indizieren.

Ich bin ein Neuling mit Umschreiberegeln, und es war klar aus meiner Lektüre des mod-rewrite documentation dass mod_rewrite eine automatische Kodierung / Dekodierung durchführt, die helfen oder schaden kann, was ich tun möchte, obwohl ich nicht sicher bin.

Irgendwelche Ratschläge zum Umschreiben von Regeln, um die oben genannten Fälle zu behandeln? Ich bin mit einer Regel für jedes Sonderzeichen einverstanden, da es nicht viele davon gibt, aber eine einzige Regel (wenn möglich) wäre ideal.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage