You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx+Perl配置URL批量重定向失败,跳转至主页求助

问题修复方案

1. 修正Perl变量定义(同时处理小写转换和下划线替换)

原Perl代码仅完成小写转换,未覆盖目标URL要求的_转--规则,同时调整变量名提升可读性,修改nginx.conf中的代码:

perl_modules perl/lib;
perl_set $rewritten_uri 'sub {
    my $r = shift;
    my $uri = $r->uri;
    # 将URI转为全小写
    $uri = lc($uri);
    # 把所有下划线替换为两个减号
    $uri =~ s/_/--/g;
    return $uri;
}';

2. 修正Location重写规则(避免循环跳转+明确跳转类型)

原rewrite规则未指定跳转类型,且无循环判断逻辑,导致Nginx内部重定向异常。修改example.com.conf中的location配置:

location /products/ {
    # 仅当当前URI不符合目标格式时才触发跳转,避免无限循环
    if ($uri !~ ^/products/[a-z0-9-]+$) {
        # permanent 代表永久重定向(HTTP 301),若需临时重定向可改用 redirect(HTTP 302)
        rewrite ^(.*)$ $scheme://$host$rewritten_uri permanent;
    }
    # 此处添加/products/路径的正常请求处理配置(如 root、proxy_pass 等)
    # 示例:root /path/to/products/static/files;
}

问题根源说明

  • 原配置未指定跳转类型,Nginx默认执行内部重定向,若变量获取异常则会跳转至默认主页。
  • 缺少循环判断逻辑,若不检查当前URI是否已符合要求,会触发无限重复跳转。
  • 未处理目标URL要求的下划线转双减号规则,无法完全匹配需求。

配置修改后,执行nginx -t验证语法正确性,无误后重启Nginx即可生效。

内容的提问来源于stack exchange,提问作者user3774771

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:52:42