Nginx Rewrite 子句在匹配的 URI 中带有空格

Nginx Rewrite 子句在匹配的 URI 中带有空格

我正在尝试将 URI 重写'/my url'为正确的语法

(不知道为什么,但有很多传入查询;就在我点击输入 URI 之后 - 至少在 Chrome 中基本更改为'/my%20url'

rewrite ^/my url/?$ /my-url permanent;

但这不起作用。

并且都不是

rewrite ^/my%20url/?$ /my-url permanent;

问题:如何定位带有空格的 URI 并正确地重定向它?

答案1

Nginx 接收带有特定字符的 URIURL 已编码.然而,Nginx规范化 URIlocation在根据和语句对其进行处理之前rewrite,因此%20已被转换回文字空间。

要处理嵌入空格、括号或分号的表达式,请使用引号。

例如:

rewrite "^/my url/?$" /my-url permanent;

相关内容