无法重写URL,因为参数是动态的

时间:2014-11-20 17:33:25

标签: php regex url nginx

我正在创建一个API,所有内容都在文件中处理,所以这里的示例网址可能是什么样的。

https://website.com/api/?type=search&user=bob

我希望转变为

https://website.com/api/search/bob

但现在这是这个问题的另一部分。我有另一个type,这是CSRF

https://website.com/api/?type=csrf

那就是

https://website.com/api/csrf/

请注意,它的一个参数很短,但仍在使用相同的文件。我尝试过的任何东西似乎都无法正常工作。此外,\文件似乎总是添加了api。我已经从那里删除了.php

所以当我尝试这个时它不起作用。有什么想法吗?

rewrite ^/([a-zA-Z0-9_-]+)/([0-9]+)$ /api/?type=$1&user=$2;

1 个答案:

答案 0 :(得分:0)

您的问题似乎是您使用$2作为用户名,这与正则表达式中的([0-9]+)相对应。

这意味着,用户名必须只是数字。

将表达式更改为:

rewrite ^/([a-zA-Z0-9\_\-]+)/([a-zA-Z0-9\_\-]+)$ /api/?type=$1&user=$2;

你的规则应该有效。