无法在 nginx 1.13 上为 laravel 使用域/子目录加载图像(错误 404)

无法在 nginx 1.13 上为 laravel 使用域/子目录加载图像(错误 404)

我无法加载保存在默认图像目录 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 有点太远了。不过还是谢谢你。

相关内容