我想在我的服务器中使用该位置并将 URL 转换为 GET 参数。我不在乎它是 URL 中的一个、两个或多个参数,但如果我转到这个 URL,它会是这样的
https://www.example.com/page/one/two/three/ ....
它应该把我送到这个
https://www.example.com/page/index.php?site=one&id=two&args=three ....
我设置了我的代码以获取 URL 中的第一个参数,但我无法进一步分解它,它总是会page/
在一个参数中一起返回所有内容
location ~ ^/page/(.*)$ {
try_files $uri /page/index.php?site=$1
}
有什么建议么?
您需要改进正则表达式中捕获的范围。捕获
(.*)
会吸收任何东西并且是贪婪的。您可以在捕获中使用惰性量词(例如(.*?)
),或者排除分隔符的字符类/
(例如([^/]+)
)。例如,要将这三种情况作为单独的规则实现:
正则表达式按顺序计算,直到找到匹配项,因此必须将更具体的规则放在不太具体的规则之前。此外,这些都需要放在
location ~ \.php$
块之后,否则您的 PHP URI 将会中断。请参阅有关正则表达式语法的有用资源。