Nginx 使用 # 重定向到 URL

Nginx 使用 # 重定向到 URL

我希望 eghttps://example.com/to/redirect由 nginx 重定向到https://example.com/some/url/with/#my-beautiful-id。然而,在 nginx 配置文件中#用于注释

有可能吗?我应该在 nginx 配置中写入什么才能使其正常工作?

不起作用

server {
    ...
    location /to/redirect {
        ...
        return https://example.com/some/url/with/%23my-beautiful-id;
    }
}

答案1

#字符不被视为注释的开头,而是某些字符串的一部分,例如https://example.com/some/url/with/#my-beautiful-id。然而它处理为注释开头,前面加上空格、{}字符;(不确定这是否是完整列表)。为了防止以这种方式处理,您需要将字符串括起来:

set $test 123#456;     # $test variable value is '123#456'
set $test 123;#456;    # $test variable value is '123', #456 treated as the comment
set $test "123;#456";  # $test variable value is '123;#456'
set $test '123;#456';  # $test variable value is '123;#456'

通常不需要在 nginx 配置中引用字符串(除非它包含空格或其他特殊字符{,如}等),但你总是可以自由地这样做,这意味着行

return https://example.com/some/url/with/#my-beautiful-id;

return "https://example.com/some/url/with/#my-beautiful-id";

完全相等。

相关内容