Lumen 应用程序使用 Nginx 服务器处理斜杠

Posted

技术标签:

【中文标题】Lumen 应用程序使用 Nginx 服务器处理斜杠【英文标题】:Lumen application work with trailing slash using Nginx server 【发布时间】:2018-01-04 19:28:00 【问题描述】:

我是 Lumen 的新手,因为我以前用过别的东西。我已经测试了 Lumen 项目,发现它在良好的支持和文档下运行良好,并且可以扩展到 Laravel,这是一个更大的项目。所以我决定为一家公司使用 Lumen,

我目前面临的唯一问题是 nginx 上的 url 斜杠。 例如 $app->get('welcome', function() return 'Hello'; ); 它回应 http://mysite.dev/welcome 但有一个斜杠 http://mysite.dev/welcome/ 该网站抛出 404。

这是因为旧网站一直使用带有斜杠的所有网址,例如PPC,SEO ...更多,他们不想重做和更改整个过程,包括使用这些网址的第3方,他们不能从带有结尾的网址执行301 / 重定向到不结尾的网址/这将导致过多的重定向.

我已经尝试了整整一周的解决方案,但仍然找不到最符合此用户要求的解决方案。

lumen 有什么方法可以将路由 url 恢复为使用结尾 / 而不是使用结尾 / 吗??

或者您能否推荐我使用其他东西?为了满足这个要求。

我也试过这个服务商还是不行link

问候

【问题讨论】:

【参考方案1】:

如果你使用Nginx,试试这个配置:

index  index.html index.htm index.php;
location @rewrite 
    rewrite ^/(.*)$ /index.php;
   
location / 
    try_files $uri $uri/ @rewrite;

我曾经遇到过类似的问题,用RoutesRequest.php调试后发现5.4版本不再需要$query_string或者$args的东西了(没理由大部分教程还在有他们)。

希望这有帮助。如果没有,也许您也可以尝试使用 RoutesRequest.php 进行调试,添加一些有用的输出肯定会帮助您找到问题。

【讨论】:

【参考方案2】:

Lumen 和 Laravel 应该可以使用斜杠。 404 可能是由于 nginx 配置错误造成的。

这就是我的 nginx 配置捕获尾部斜杠并在该位置使用相同内容的方式。

location / 
    index index.html index.htm index.php;
    try_files $uri $uri/ /index.php?$query_string;

【讨论】:

感谢您的帮助。这个配置是我现在拥有的。请记住,在 lumen 或 laravel 中必须进行一些配置,以使不带“/”的 url 返回 404 而不是带“/”

以上是关于Lumen 应用程序使用 Nginx 服务器处理斜杠的主要内容,如果未能解决你的问题,请参考以下文章

lumen+nginx+405 not allow +跨域

当我尝试使用 nginx 连接到我的 lumen api 时返回 502

Lumen + nginx = 错误 500,重写或内部重定向循环,同时内部重定向到“/index.php”

使用 docker-compose 在 Docker 中运行 laravel/lumen

Apache 忽略来自 Lumen 的标头和状态代码

Deepin nginx lumen配置