Подтвердить что ты не робот

RewriteCond для URL с параметрами

У меня возникла проблема переписать URL-адрес. Я хочу это:

http://www.foo.com/test.php?u=s1&id=12345&img=12

к

http://app.foo.com/12345-s1-12.test

Первый параметр u - это строка, параметры id и img - целые числа.

Я начал с чего-то подобного:

RewriteCond %{REQUEST_URI} ^/test.php?u=(.*)&id=(.*)&img=(.*)/ [NC]
RewriteRule (.*) http://app.foo.com/%2-%1-%3.test [QSA,R=301,L]

Спасибо:)

EDIT:

Все еще не работает, но я рядом!

RewriteCond %{REQUEST_URI} ^/test.php [NC]
RewriteCond %{QUERY_STRING} ^u=(.*)&id=(.*)&img=(.*)
RewriteRule (.*) http://app.foo.com/%2-%1-%3.test [QSA,R=301,L]

Теперь он дает мне ссылку:

http://app.foo.com/12345-s1-12.test?u=s1&id=12345&img=12

Вместо:

http://app.foo.com/12345-s1-12.test

: (

4b9b3361

Ответ 1

Решено!

RewriteCond %{REQUEST_URI} ^/test.php [NC]
RewriteCond %{QUERY_STRING} ^u=(.*)&id=(.*)&img=(.*)
RewriteRule (.*) http://app.foo.com/%2-%1-%3.test? [R=301,L]

Размещение ? в конце RewriteRule удаляет предыдущую информацию строки запроса.

Ответ 2

Это прекрасно работает! Я использовал это, но мне интересно, почему целевой URL показывает "% 3f" в конце.

Я использую:

   RewriteCond %{REQUEST_URI} ^/ie/xx/yy.php [NC]
   RewriteCond %{QUERY_STRING} ^rubric=(.*)&nr=(.*)
   RewriteRule (.*) https://www.newdom.com/xx/yy.php?rubric=%1&nr=%2 [R=301,L]

Почему% 3f в конце?