用Nginx重写对index.php的所有params请求

时间:2016-06-22 08:57:10

标签: nginx url-rewriting

我是这样的网址 http://www.example.com/index.php?page=profile&id=324&opt=edit&cat=23& ...

我希望我拥有 http://www.example.com/profile/324/edit/23 ...

我阅读了几个关于如何删除php扩展但不知道如何传递其他参数的教程

感谢所有人

更新

使用PHP解决方案。

nginx:

location / { 
try_files $uri $uri/ /index.php; 
} 

PHP:

$params = explode("/",$_SERVER['REQUEST_URI']); 

并使用它们

1 个答案:

答案 0 :(得分:0)

实际上,如果这些参数总是和你的例子一样,这很容易。

在nginx配置中添加重写规则。

rewrite ^/index.php?page=(.*)&id=(.*)&opt=(.*)&cat=(.*)(&.*)$ /$1/$2/$3/$4

但如果每个请求中params的顺序发生变化,我们可能需要另一个解决方案。

<强>更新 nginx将请求args存储在$ arg_name之类的变量中,$ arg_之后的名称是否为实际请求参数名称。因此,您只需要将带有拖尾问号的index.php请求重写为您想要的url样式。

rewrite ^/index.php? /$arg_page/$arg_id/$arg_opt/$arg_cat;