提问者:小点点

从Laravel图像url中删除“存储”


我已经上传了一张图片到服务器,所有设置都正确,除了我需要在URL中添加存储,以访问Laravel公共目录中的图片。

https://example.com/a/xyz.png-无法访问

https://example.com/storage/a/xyz.png-无障碍

但在本地,可以访问不带存储的URL。

NGINX

root /var/www/example.in/live/public/;
index index.html index.php index.htm index.nginx-debian.html;
server_name example.in www.example.in;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}

location ~ /\.ht {
        deny all;
}

这不是我需要从URL隐藏存储字的问题。我的问题是默认情况下,图像的URL应该在没有存储字的情况下工作。它不起作用。在我的本地机器上由代客管理的相同代码,在没有存储关键字的情况下工作正常


共1个答案

匿名用户

问题是,通过执行命令php-artisan-storage:link,它应该位于那个位置(即public\u路径(“存储”))。这是默认行为。您可以手动链接到所需位置,如下所示:

ln -s /absolute/path/to/project_root/storage/app/public /absolute/path/to/project_root/public/wanted-name-of-directory

或使用自定义命令扩展本机命令。对于后一种解决方案,请遵循此答案中的逻辑。应该是这样的:

>

  • php artisan make:命令CustomStorageLinkCommand

    然后从新创建的文件中删除所有内容,并使用以下代码:

    <?php
    
    namespace App\Console\Commands;
    
    use Illuminate\Foundation\Console\StorageLinkCommand;
    
    class CustomStorageLinkCommand extends StorageLinkCommand
    {
        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = 'Create a symbolic link from "public/a" to "storage/app/public"';
    
        /**
         * Execute the console command.
         *
         * @return void
         */
        public function handle()
        {
            if (file_exists(public_path('a'))) {
                return $this->error('The "public/a" directory already exists.');
            }
            $this->laravel->make('files')->link(
                storage_path('app/public'), public_path('a')
            );
            $this->info('The [public/a] directory has been linked.');
        }
    }