Laravel 8搭配Nginx无法访问文件、asset生成路径多斜杠404问题
解决方案
1 修复asset()生成路径带public//双斜杠问题
该问题由路径拼接逻辑导致,按以下步骤排查:
- 打开项目根目录
.env文件,检查APP_URL配置,末尾不要加斜杠,正确示例:APP_URL=https://你的实际域名 - 调用
asset()方法时,传入的路径开头不要加斜杠,正确写法:
不要写成asset('iframes/目标文件.html')asset('/iframes/目标文件.html'),否则会和APP_URL末尾的斜杠拼接出双斜杠。 - 修改完成后执行命令清理配置缓存:
php artisan config:clear
2 修复静态路径正确但返回404问题
该问题是Nginx配置未优先匹配静态文件导致,请求被直接转发给Laravel路由,未匹配到路由就返回404,按以下步骤修复:
- 打开Nginx站点配置文件,默认路径为
/etc/nginx/sites-available/你的站点配置名.conf - 确认
root配置指向Laravel项目的public目录,示例:root /var/www/你的项目目录/public; - 新增/修改
location /块的规则,配置静态文件优先匹配逻辑:
该规则会先判断请求路径是否为真实存在的静态文件,存在则直接返回,不存在才交给Laravel处理。location / { try_files $uri $uri/ /index.php?$query_string; } - 测试Nginx配置是否合法:
nginx -t - 配置测试通过后重载Nginx生效:
systemctl reload nginx - 额外检查:确认
iframes目录存放在项目public目录下,且文件权限正确,运行web服务的用户(默认是www-data)有读取权限,可执行以下命令修正权限:chown -R www-data:www-data /var/www/你的项目目录 chmod -R 755 /var/www/你的项目目录/public
内容的提问来源于stack exchange,提问作者salva garcia
相关产品推荐
相关产品推荐

