0

我想重写以下网址:

index.php?SOMETHING=VALUE

作为

/SOMETHING/VALUE

我对 nginx 重写没有经验,因此将不胜感激。

谢谢

4

1 回答 1

1

我想出了解决您问题的方法:

location /index.php {
    if ( $args ~ "(?<PATH1>.*)=(?<PATH2>.*)" ) {
        rewrite ^ /${PATH1}/${PATH2}? last;
    }
}

说明:

  • if ( $args ~ "(?<PATH1>.*)=(?<PATH2>.*)" ):从 URL 参数中捕获两个相关部分,将值存储在变量PATH1PATH2
  • rewrite ^意思是“重写整个 URI”
  • /${PATH1}/${PATH2}正在构建新的 URI
  • 尾随?通知nginx您不想附加原始 URL 参数
  • last告诉nginx重写后继续遵守规则
于 2012-11-26T10:55:59.413 回答