【问题标题】:nginx rewrite from apache 1 rulenginx 从 apache 1 规则重写
【发布时间】:2012-09-20 02:47:50
【问题描述】:

您好,需要帮助将这条规则从 apache 重新发送到 nginx,尝试了一整天但一无所获:

阿帕奇: ^pimage/small-([^/.]+)-([^/.]+).jpg$ /img_on_fly.php?iname=$1&iuid=$2&isize=small

尝试了所有在线转换器,尝试了我在网上找到的所有内容,但一无所获。我没有使用 nginx 的经验,但其他 15 条规则被一一重写,但都比这简单,所以如果有人可以的话。另外,我不确定 nginx conf 中这条规则的“位置”是什么?

【问题讨论】:

    标签: nginx


    【解决方案1】:

    在 conf 文件的 server 元素中尝试以下操作

    location ~ ^\/pimage\/small\-(?<iname>[^\/\.]+)\-(?<iuid>[^\/\.]+)\.jpg$ {
        try_files $uri /img_on_fly.php?iname=$iname&iuid=$iuid&isize=small
    }
    

    您的 conf 文件应如下所示:

    server {
        ...
        ...
        ...
    }
    

    你可以改成

    server {
        ...
        ...
        ...
    
        location ~ ^\/pimage\/small\-(?<iname>[^\/\.]+)\-(?<iuid>[^\/\.]+)\.jpg$ {
            try_files $uri /img_on_fly.php?iname=$iname&iuid=$iuid&isize=small
        }
    }
    

    【讨论】:

    • 嗨,奥马尔,感谢您的尝试,但这也行不通...没有什么“击中”这个位置,实际上这是问题的核心,要“解雇”这条规则的位置 {} 是什么' ?
    • 你的 conf 应该看起来像 server { ... }。我将进行编辑以向您展示
    • 查看我的编辑。我在位置后添加了一个“~”(我的错字),并且我还转义了您搜索的名称中的一些字符。我也使用了命名匹配
    • Omar 尝试了这个,但仍然没有,甚至做了一些“变化”但没有,nginx 重新启动后接受这个配置/规则,日志中没有错误,但只是这不“触摸”希望的位置。 ..
    • 我刚刚又编辑了一遍。将 [^\/.]+ 更改为 [^\/\.]+。您有要测试的网址吗?
    【解决方案2】:

    转义点怎么样,像这样:

    rewrite ^pimage/small-([^/\.]+)-([^/\.]+).jpg$ /img_on_fly.php?iname=$1&iuid=$2&isize=small;
    

    试一试并回复评论。

    更新
    尝试转义破折号,如下所示:

    rewrite ^pimage/small\-([^/\.]+)\-([^/\.]+).jpg$ /img_on_fly.php?iname=$1&iuid=$2&isize=small;
    

    尝试之后,再尝试“点不转义破折号”的变体。

    【讨论】:

    • 嗨尼尔森,谢谢你,但不工作:(还有其他想法吗?:)
    • 我已经用两种新的可能性更新了我的答案,尝试一下,我认为它们会起作用。
    • 您正在为 apache 而不是 nginx 提供重写规则。你的会导致错误
    猜你喜欢
    • 2014-11-17
    • 2017-07-26
    • 2018-05-05
    • 2014-04-24
    • 2023-03-18
    • 2014-06-30
    • 2016-08-09
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多