首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Nginx路由问题

Nginx路由问题
EN

Stack Overflow用户
提问于 2019-02-21 02:47:28
回答 1查看 33关注 0票数 -2

不完全确定如何问这个问题,但我也找遍了网络,也找不到答案,所以任何帮助都是非常感谢的。

我正在尝试通过我的网站设置一个使用nginx的API调用,如果我发送url /api/timestamp/它就能正常工作并返回预期的结果。但是,如果我添加一个参数并发送/api/timestamp/2015-08-09,它会尝试打开文件2015-08-09,而这个文件显然不存在。

如何让Nginx将参数作为参数传递给我的程序,而不尝试将其用作路由?还是我看错了?

代码语言:javascript
复制
server {
    listen          83 default_server;
    server_name     portfolio.com;

    access_log      /var/log/nginx/port.access.log;
    error_log       /var/log/nginx/port.error.log;
    root            /var/www/portfolio/;
    index           index.php;

    error_page 404    /404.html;
    error_page 405    =200 $uri;

    location /api/timestamp/ {

            rewrite         /api/timestamp/(.*) /api/timestamp/?param=$1 last;
    }

    location ~ \.php$ {
            try_files       $uri $uri/  =404;
            fastcgi_pass    unix:/run/php/php7.2-fpm.sock;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include         /etc/nginx/fastcgi.conf;
    }

}

EN

回答 1

Stack Overflow用户

发布于 2019-02-21 05:37:31

您需要使用重写规则,对您来说最简单的解决方案如下所示

代码语言:javascript
复制
location /api/timestamp/ {
    rewrite /api/timestamp/(.*) /api/timestamp/?param=$1 last;
}

然后,您将收到一个名为参数的参数中的值(根据您的请求更改它)。

显然,您可以使用限制最严格的正则表达式来避免不需要的值。

您可以在https://www.nginx.com/blog/creating-nginx-rewrite-rules/中获取更多信息。

致以问候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54793276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档