使用 nginx 匹配重写规则中的 ... 字符

使用 nginx 匹配重写规则中的 ... 字符

我遇到了一个问题,有人在我们的网站上添加了一个链接,但该链接被切断了。我在日志文件中看到:

/info-cry%E2%80%A6

我知道这意味着什么,所以我尝试在网站的 nginx 配置中为其创建重写规则。我尝试了以下两种方法:

rewrite ^/info-cry%E2%80%A6 https://example.com/info-cryptex-16gb-usb-drive-587.html permanent;
rewrite ^/info-cry… https://example.com/info-cryptex-16gb-usb-drive-587.html permanent;

..但它从不匹配(只显示我们的自定义 404 页面)。有什么办法可以实现这一点吗?我真的很想让它工作 - 因为我们收到了很多对损坏 URL 的点击

答案1

这很奇怪。在 Ubuntu 15.04 的 nginx 1.6.2 上,所有默认模块都可以做到

location / {
    rewrite ^/foo… http://example.com permanent;
}

...并获得预期的重定向。

假设你已经重新加载了 nginx 并禁用了浏览器缓存,你确定重写发生在匹配的位置块中吗/info-cry…?你也有可能可能需要添加 (*UTF8)到定义位置块的正则表达式。

相关内容