Nginx根据要求重新路由

时间:2017-03-01 10:34:25

标签: nginx routing

所以我试图配置nginx,以便该文件可以获取和处理不同的请求。 例如,两种网址: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请求。我可以拿起,但我不能拿起示例网址的第二个变种,它会被服务器忽略。

1 个答案:

答案 0 :(得分:0)

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

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

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