So leiten Sie eine Anfrage para /<something>%26<something>
a /<something>%2526<something>
dann können Sie mit mod_rewrite etwas wie das Folgende tun:
RewriteRule (.+)&(.+) /$1\%26$2 [R,L]
Le site RewriteRule
Muster stimmt mit dem %-dekodierten URL-Pfad überein (d. h.. &
pas %26
). Sie sollten also einfach angeben &
(Ampersand) wörtlich. Beachten Sie, dass dies eine Anfrage für beide übereinstimmen wird /something_%26_else
y /something_&_else
(seit &
muss nicht in der Anfrage kodiert werden).
Le site %
(Prozent) in der RewriteRule
Substitution muss mit einem Schrägstrich versehen werden, um einen wörtlichen Ausdruck darzustellen %
sonst wird es als Rückverweis auf das letzte übereinstimmende Ergebnis gewertet CondPattern und die gibt es nicht, also %2
würde sonst eine leere Zeichenkette werden!
Standardmäßig kodiert mod_rewrite automatisch die Ersetzungs-URL, was wir in diesem Fall auch wollen: %26
wird (doppelt) kodiert als %2526
.
Wenn Sie speziell ein Schleifenkonstrukt benötigen, wenn Sie zum Beispiel %26
mehr als einmal in der angeforderten URL vorkommen kann, können Sie stattdessen etwas wie das Folgende tun:
# 1. Looping construct to replace all "&" (decoded %26)
RewriteRule (.+)&(.+) $1\%26$2 [N,E=REPLACED:yes]
# 2. Finally redirect. Substitution is only URL-encoded at this stage.
RewriteCond %{ENV:REPLACED} yes
RewriteRule (.*) /$1 [R,L]
Weitere Erklärungen und Alternativen finden Sie in meiner Antwort auf dieselbe Frage auf dem Pro Webmasters Stack: