关于route函数生成url的原理
1. 运行环境
框架为 Laravel 9
环境为nginx、php 8
2). nginx服务配置
http://127.0.0.1/xxx/
- 我是获取地址参数,然后通过proxy_pass转发到不同端口,从而达到访问不同项目的目的。
location /xxx/ { proxy_pass http://localhost:8081/; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
3). 问题描述
- 页面是可以正常访问的,但是前端组件中使用了route()函数,打印了route()函数返回的数据,显示为127.0.0.1/ ,缺少了xxx/的部分
- 尝试过通过修改env文件中的APP_URL来解决此问题,但没反应。也尝试过自定义route()函数,通过APP_ENV来判断是否加前缀,毕竟上线后还是不需要xxx/的这个前缀的,但自定义函数由于加载顺序原因获取不到env里的内容。
2. 期望得到的结果
- 希望能优雅的修改route()函数的host部分的返回值,最好能够通过配置文件的方式完成。
route('login'); // 正常情况下的返回值,http://127.0.0.1/login // 我期待的返回值,http://127.0.0.1/xxx/login
把这个放在任意 ServiceProvider 的 boot 里面,应该就可以。