У меня есть это правило перезаписи ...
Перенаправить весь первоначальный запрос с world.example.com на web.example.com
RewriteCond %{HTTP_HOST} ^world\.example\.com$ [NC] RewriteCond %{HTTP_HOST} !^$ RewriteCond %{SERVER_PORT} !^80$ RewriteRule ^(.*)$ https://web.example.com$1 [R=301,L]
Который прекрасно работает. Но некоторые из моих приложений имеют ...
https://world.example.com/approvals/?id=b47b5256567
К сожалению, он неправильно перенаправляется на web.example.com. Вместо этого он просто переходит на web.example.com без параметров запроса.
Как я могу правильно перенаправить все запросы на web.example.com вместе с параметрами запроса?
В основном, что он должен делать ...
https://world.example.com/approvals/?id=b47b5256567 then https://web.example.com/approvals/?id=b47b5256567
Просто изменив мир на веб и передав строку запроса.
Помощь
Вам не нужно использовать сложный механизм переписывания, чтобы сделать это. Просто используйте Redirect:
Redirect
<VirtualHost *> ServerName world.example.com Redirect permanent / https://web.example.com/ </VirtualHost>
Директива Redirect автоматически сохраняет все, что приходит после того, что вы перенаправляете.
Вы забыли использовать флаг «Добавление строки запроса» [R=301,L,<b>QSA</b>].
[R=301,L,<b>QSA</b>]
Мы можем сделать это и с Nginx.
server { listen 80: server_name: world.example.com # URL redirect #rewrite ^ http://web.example.com$request_uri? permanent; rewrite ^ $scheme://web.example.com$request_uri permanent; #rewrite ^ $scheme://web.example.com permanent; #rewrite ^ $scheme://web.example.com; }
Ссылка: