使用多个参数重写Nginx URL

时间:2012-10-22 17:16:53

标签: regex nginx seo rewrite

我试图通过Nginx重写以下网址:

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

这样的事情:

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

到目前为止我能找到的是如何包含单个变量。我有五个变量要通过,每个变量都以“/".

结尾

1 个答案:

答案 0 :(得分:3)

您可以通过$arg_name变量

访问nginx中的脚本参数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,......变量引用