Nginx根据请求重新路由

Nginx根据请求重新路由,nginx,routing,Nginx,Routing,所以我尝试配置nginx,以便该文件能够获取和处理不同的请求。 例如,有两种URL:www.example.com/trips/some slug/,另一种是www.example.com/trips/?var=some value。我有文件的路由规则: location ~ ^/trips/(.*)/?$ { try_files $uri $uri/ /views/trips.php?slug=$1; } 这将发送一个GET请求。我可以选择,但是我不能选择示例url的第二个变体,它只是被

所以我尝试配置nginx,以便该文件能够获取和处理不同的请求。 例如,有两种URL:
www.example.com/trips/some slug/
,另一种是
www.example.com/trips/?var=some value
。我有文件的路由规则:

location ~ ^/trips/(.*)/?$ {
  try_files $uri $uri/ /views/trips.php?slug=$1;
}

这将发送一个GET请求。我可以选择,但是我不能选择示例url的第二个变体,它只是被服务器忽略。

您可以在指定位置处理这两种类型的URI:

location /trips/ {
    try_files $uri $uri/ @trips;
}
location @trips {
    rewrite ^/trips/$ /views/trips.php last;
    rewrite ^/trips/([^/]*)/?$ /views/trips.php?slug=$1 last;
}

请注意,该示例使用了一个前缀位置,它具有不同的优先顺序。有关详细信息,请参阅。当然,您可以继续使用正则表达式位置。

您可以在命名位置处理两种类型的URI:

location /trips/ {
    try_files $uri $uri/ @trips;
}
location @trips {
    rewrite ^/trips/$ /views/trips.php last;
    rewrite ^/trips/([^/]*)/?$ /views/trips.php?slug=$1 last;
}
请注意,该示例使用了一个前缀位置,它具有不同的优先顺序。有关详细信息,请参阅。当然,您可以继续使用正则表达式位置