Как бы я переписал:
http://www.example.com/foo.html?order=desc&limit=all&something=else
к
http://www.example.com/foo.html?order=desc&something=else
Я хочу удалить все экземпляры на limit=all
независимо от того, сколько других параметров в URL.
Я пытался:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^(.*&)&limit=all(&.*)?$ [NC]
RewriteRule ^foo\.html$ /foo\.html\?%1%2 [R=301,L]
Немного поигравшись, я смог добиться этого следующим образом:
RewriteCond %{QUERY_STRING} ^(.*)limit=all\&(.*)$
RewriteRule ^foo\.html$ http://www.example.com/foo\.html?$1%1%2 [R=301,L]
Благодаря Крис С за предложение убрать амперсанды
У тебя есть ^(.*&)&limit=all(&.*)?$
который ожидает два амперсанда подряд перед пределом.
Поскольку вы уверены, что у вас всегда будут параметры по обе стороны от лимита = все, измените его на ^(.*&)limit=all&(.*)$