Назад | Перейти на главную страницу

Параметр удаления Mod_rewrite в 301 Redirect

Как бы я переписал:

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&(.*)$