我们的一位客户创建了一个二维码,其中 url 中包含一个空格。我将如何编写处理此问题的 nginx 重定向?
在字符串中使用诸如“%20”之类的东西的几次尝试似乎会导致 nginx 出错或使 configtest 失败
准确地说,二维码是这样读的
http://www.google.com/somestuff /someotherstuf/pagewewant
我需要将它重定向到
http://www.google.com/somestuff/someotherstuf/pagewewant (重写应该在 somestuff 之后不显示空格)
谢谢你的时间
小智 5
我遇到了完全相同的问题。不能使用 %20 的原因是,nginx 会解释 uri,因此 %20 将不匹配:
http request line: "GET /something/%20something HTTP/1.1"
http uri: "/something/ something"
Run Code Online (Sandbox Code Playgroud)
我不想为此使用位置,所以我使用了:
rewrite ^/something/\ something /something/something permanent;
Run Code Online (Sandbox Code Playgroud)
这对我来说效果很好。
这个问题已经有两年多了,但也许它会帮别人省去一些麻烦。
警告:我不是 nginx 专家。这只是我在发现这个悬而未决的问题后尝试过的事情之一,而且它碰巧起作用了。这可能不是最好的方法。我建议您检查 nginx 文档,以防万一要处理大量此类位置。
对于偶尔重写(包括空格)的情况,我将路径放在单引号中:
location '/level_one /landingpage.htm' {
rewrite ^ http://www.foo.bar/level_one/landingpage.htm permanent; }
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因您需要在目标中包含空格,请将其放在单引号中:
location '/downloads/foo bar.pdf' {
rewrite ^ 'http://www.foo.bar/documents/foo bar.pdf' permanent; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7136 次 |
| 最近记录: |