asset 函数返回的 url 不是域名 ,是 ip
我用 laravel 做的小程序后台数据服务。我遇到一个这样的问题。刚开始我没有域名,直接用 ip 访问,用户的头像和相册都能显示。现在我换成域名了,相册的图片 url 返回的是域名,而 头像的 url 还是 IP地址。我在后台用的 api resource.
代码
//user resource
public function toArray($request)
{
return [
'user_id' => $this->id,
'nickname' => $this->post->nickname??'',
'location' => $this->post->location[1]??'',
'avatar' => substr($this->post->avatar, 0, 4) == 'http' ? $this->post->avatar : (!$this->post->avatar ? '':asset('storage/'.$this->post->avatar)), //用户的头像
'register_time' => $this->post->created_at,
'pictures' => PostPictureResource::collection($this->post->pictures),//用户的相册
...
}
.env 文件的 APP_URL 也改成现在的域名了。
返回给小程序端的用户的头像的 url 就是这样的:'39.105.229.114/storage/pictures/rXYEsdbFPnP2Xlw51iGPYbGUbz3F8dahrYAxIJPp.jpeg',
但是相册图片的 url 就是 '我的域名/storage/pictures/xRQE8cdQFArA6FiBQARVPXWR9M6HYWArKCaKQImu.jpeg'
是我的 nginx 配置有问题吗?
会不会是数据库直接存的图片地址(IP),比如
http://127.0.0.1/avatar.png
这样,然后取得时候就直接把这个返回了?你看看你小程序访问后端的接口地址的是哪个,是 IP 还是域名。我觉得应该是访问了 IP 才导致这样。