【问题标题】:nginx rewrite rule missing slashnginx重写规则缺少斜杠
【发布时间】:2013-01-19 14:15:23
【问题描述】:

我有一个缩略图类,它也接受外部主机。它现在是这样工作的:

http://mysite.com/resize/src=http://google.com/logo.png&w=50&h=50

我想用我的“resize.mysite.com”子域使其成为干净的 url,如下所示:

http://resize.mysite.com/400x200/http://google.com/logo.png

我几乎用这个重写规则完成了:

rewrite ^/([^x]*)x([^/]*)/(.*)$ /resize.php?w=$1&h=$2&src=$3 last;

但它在“http:”之后发送“src”而没有第二个斜杠,这会导致调整类错误,如下所示:

http:/google.com/logo.png
http://google.com/logo.png (what I expect)

如何解决这个问题?

【问题讨论】:

    标签: nginx rewrite


    【解决方案1】:

    首先想到的是,您在nginx 配置文件中的某处使用了特殊指令merge_slashes,这是真的吗?如果是,并且您使用的是merge_slashes on,那么您所有带有双斜杠或三重斜杠等斜杠的请求都将作为一个斜杠。

    设置指令merge_slashes off可以解决您的问题吗?

    【讨论】:

    • 它工作了 :) 我以前从未设置过它,但文档说它的默认值是“on”,所以它会导致缺少斜杠。谢谢。
    • 但要小心,因为merge_slashes 适用于所有服务器配置(因此每个特定域+端口的所有位置),有时它会带来一些安全问题。无论如何,很高兴我能提供帮助;)
    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多