You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel生产环境Storage图片403禁止访问问题(本地正常)

Laravel电商网站生产环境图片403 Forbidden 解决方法

核心问题排查与修复步骤

1. 修正图片存储路径(最可能的根源)

Laravel的storage:link命令默认将public/storage软链指向storage/app/public目录,只有存放在storage/app/public下的文件才能通过domain/storage/xxx路径访问。你当前把图片存在storage/products,这个目录不在软链指向的范围内,导致请求找不到对应文件触发403。

修复方式二选一:

  • 优先推荐:将产品图片移动到storage/app/public/products目录下,保持符合Laravel默认存储规范
  • 特殊场景可选:重新创建软链指向storage/products(不推荐,可能引发后续存储逻辑问题)
    rm public/storage
    ln -s ../storage/products public/storage
    

2. 调整.htaccess规则顺序

你当前的存储路径重写规则放在了前端控制器规则之后,会被前面的规则拦截失效,需要把它移到Send Requests To Front Controller之前:

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Allow access to storage directory
RewriteRule ^storage/(.*)$ /rup/storage/app/public/$1 [L]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

3. 完善目录权限设置

除了storage目录,还要确保项目根目录等父级目录的权限允许Web服务器用户访问,同时避免过度宽松的权限:

# 给项目根目录设置基础访问权限
chmod 755 /path/to/your/laravel/project
chown -R www-data:www-data /path/to/your/laravel/project

# 给storage目录和文件设置更安全的权限
find storage -type d -exec chmod 755 {} \;
find storage -type f -exec chmod 644 {} \;

4. 检查Web服务器配置

  • Apache环境:确认虚拟主机配置中开启了AllowOverride All,否则.htaccess规则无法生效:

    <Directory /var/www/html/your-laravel-project>
        AllowOverride All
        Require all granted
    </Directory>
    

    修改后重启Apache:sudo systemctl restart apache2

  • Nginx环境:在server块中添加storage路径的解析规则,确保请求能直接指向存储目录:

    location /storage {
        alias /var/www/html/your-laravel-project/storage/app/public;
        autoindex off;
    }
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    

    修改后重启Nginx:sudo systemctl restart nginx

5. 验证软链有效性

登录服务器检查public/storage软链的目标是否正确:

ls -l public/storage

如果目标路径错误,重新创建软链:

# 先删除旧软链
rm -f public/storage
# 用artisan命令创建默认软链
php artisan storage:link

内容的提问来源于stack exchange,提问作者mahtab.hossain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:28:19