Во-первых, у вашего правила RewriteRule ^/~/bar.pdf?la https://www.bar.foo.com/foo.pdf [R=301,L,NC]
есть несколько проблем.
Во-первых, RewriteRule ^/
здесь не применимо, поэтому достаточно RewriteRule ^
.Во-вторых, вы должны экранировать ~
как этот RewriteRule ^\~
и, наконец, не пишите строку запроса с RewriteRule
, как bar.pdf?la
, потому что она не является частью URI
.
Строка должнавыглядеть следующим образом:
RewriteRule ^\~/bar.pdf https://www.bar.foo.com/foo.pdf [R=301,L,NC]
Но строка запроса может добавляться к новой цели, чтобы предотвратить добавление ?
в конце цели:
RewriteRule ^\~/bar.pdf https://www.bar.foo.com/foo.pdf? [R=301,L,NC]
Если вы хотитеиспользуйте значение строки запроса, вы можете добавить условие перед этим, чтобы использовать его:
RewriteCond %{QUERY_STRING} ^(.*)$
вы можете изменить ^(.*)$
на что угодно, и вы можете использовать его в target, как в этом примере:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)$ https://www.whatever.com/%1/$1 [R=301,L,NC]
Итак, %1
относится к этому условию RewriteCond %{QUERY_STRING} ^(.*)$
и $1
относится к этому условию RewriteRule ^(.*)$
и т. Д.