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 服务器处理斜杠的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试使用 nginx 连接到我的 lumen api 时返回 502
Lumen + nginx = 错误 500,重写或内部重定向循环,同时内部重定向到“/index.php”