使用多个参数重写 Nginx URL

Hir*_*ram 2 regex seo rewrite nginx

我正在尝试通过 Nginx 重写以下 URL:

http://www.domain.com/script.php?title=LONGSTRING&desc=LONGSTRING&file=LONGSTRING&id=THREELETTERS
Run Code Online (Sandbox Code Playgroud)

变成这样:

http://www.domain.com/script/LONGSTRING/LONGSTRING/LONGSTRING/LONGSTRING/THREELETTERS.html
Run Code Online (Sandbox Code Playgroud)

到目前为止我能找到的只是如何包含一个变量。我有五个变量要传递,每个变量都以“/”结尾。

cob*_*aco 5

您可以name通过$arg_name变量访问nginx 中的脚本参数

将带有脚本参数的 url 重写为一个 seo 友好的 url 然后变成一个简单的重写,如下所示:

location /script/script.php {
  rewrite ^ /script/$arg_title/$arg_desc/$arg_file/$arg_id.html last;
}
Run Code Online (Sandbox Code Playgroud)

相反,将 seo-friendly url 重写为 php 脚本版本将是:

location /script/ {
  rewrite "^/script/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z]{3})$" 
          /script.php?title=$1&desc=$2&file=$3&id=$4 last;
}
Run Code Online (Sandbox Code Playgroud)

基本上你有正则表达式捕获(每个圆括号对都是一个捕获),然后你可以用 $1, $2, ... 变量引用