【问题标题】:Nginx URL Rewrite with Multiple Parameters使用多个参数重写 Nginx URL
【发布时间】:2012-10-12 13:23:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: regex nginx seo rewrite


    【解决方案1】:

    你可以通过$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, ... 变量引用它们

    【讨论】:

    • 这看起来与问题相反。 from 和 to 模式是错误的。它是基于参数到基于路径的。
    • 哎呀,你是对的,我做错了,添加了另一个方向
    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 2015-08-26
    • 1970-01-01
    • 2015-06-13
    • 2018-10-29
    • 1970-01-01
    • 2016-07-29
    • 2014-02-18
    相关资源
    最近更新 更多