Nginx多参数URL重写

3

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

http://www.domain.com/script.php?title=LONGSTRING&desc=LONGSTRING&file=LONGSTRING&id=THREELETTERS

into something like this:

http://www.domain.com/script/LONGSTRING/LONGSTRING/LONGSTRING/LONGSTRING/THREELETTERS.html

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

6

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

将具有脚本参数的URL重写为SEO友好的URL,只需要进行简单的重写,如下所示:

location /script/script.php {
  rewrite ^ /script/$arg_title/$arg_desc/$arg_file/$arg_id.html last;
}

反过来,将SEO友好的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;
}

基本上,您拥有正则表达式捕获(每对圆括号都是一个捕获),然后可以使用$1、$2等变量引用它们。


这看起来与问题相反。从和到的模式是颠倒的。它是基于参数而不是基于路径的。 - Rob Evans
哎呀,你说得对,我搞反了,加了另一个方向。 - cobaco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接