Похоже, что директива rewrite
неправильно обрабатывает фрагмент #
при сборке строки запроса в строку замены.
Вы можете запретить добавлению строки запроса rewrite
, добавивтрейлинг ?
к строке замены. Таким образом, вы можете построить правильный результат, используя встроенные переменные $is_args
и $args
.
Например:
rewrite ^/foo$ https://one.example.com/page$is_args$args#one? permanent;
См. этот документ дляподробности.
Обратите внимание, что строка запроса не является частью нормализованного URI, используемого для сопоставления операторов rewrite
и location
, поэтому ваше регулярное выражение ^/foo(\?.*)$
не будет работать.