【问题标题】:Nginx extract a value from a variable or any stringNginx 从变量或任何字符串中提取值
【发布时间】:2012-09-09 16:25:50
【问题描述】:

是否可以使用 If 从 Nginx 配置文件中的变量中提取值?

    if ($http_referer ~* (?<=url=)([\w-.]*)(?=/) ){
            set $proxied $1;
            rewrite (?<=/)(.+\.(css|jpg|png|gif|js)) http://$proxied/$1 redirect;

     }

谢谢

【问题讨论】:

    标签: redirect nginx


    【解决方案1】:

    是的。 http://nginx.org/r/map

    map $http_referer $proxied {
        default  example.com;
        "~*(?<=url=)(?<p>[\w-.]*)(?=/)" $p;
    }
    

    【讨论】:

    • 谢谢,看起来像这样可以解决问题,但 $p 代表什么?
    • 它被命名为捕获:regular-expressions.info/named.html,因为地图不支持位置捕获。
    • 在您的 if 示例中,set $proxied $1; 指令是多余的。你可以写(?&lt;=url=)(?&lt;proxied&gt;[\w-.]*)(?=/)
    • @VBart: mapdocumented 也支持位置捕获
    • @Dan Dascalescu:文档有误,或者至少具有高度误导性:请参阅forum.nginx.org/read.php?2,254538,254555
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 2019-06-03
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多