我无法加载保存在默认图像目录 laravel (laravelroot/public/images) 中的图像。我已将 laravel 设置为http://域名/laravelroot.配置如下:
server {
listen 80;
server_name localhost;
index index.php;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ /.well-known {
allow all;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
location ^~ /laravelroot {
alias /usr/share/nginx/html/laravelroot/public;
try_files $uri $uri/ @laravelroot;
location ~ \.php {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/laravelroot/public/index.php;
}
}
location @laravelroot {
rewrite /laravelroot/(.*)$ /laravelroot/index.php?/$1 last;
}
在元素检查中,其域指的是http://localhost/图像文件。当我在新标签页上打开图片,并将 URL 更改为http://localhost/laravelroot/images/imagefile.png已加载。
我尝试将图像位置放在 laravelroot 指令中。
location ^~ /laravelroot {
alias /usr/share/nginx/html/laravelroot/public;
try_files $uri $uri/ @laravelroot;
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
alias /usr/share/nginx/html/laravelroot/public/images;
access_log off;
log_not_found off;
expires 360d;
}
location ~ \.php {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/laravelroot/public/index.php;
}
}
但没有用。花了几个小时,但今天没有任何线索。
答案1
我发现了问题。laravel 本身需要设置图像的基本路径。
我将所有资产放在公共文件夹中,然后使用 HTML::image() 方法,并且只需要一个参数,该参数是图像的路径,相对于公共文件夹:
{{ HTML::image('images/picture.png') }} 生成以下 HTML 代码:
http://localhost/images/picture.png
似乎离 serverfault 有点太远了。不过还是谢谢你。