Laravel 11跨目录资源访问异常问题求助
Laravel 11 静态资源路径配置问题解决
问题背景
使用Laravel 11,出于安全考虑将public目录移出主项目目录,当前目录结构如下:
/root /main /app /bootstrap /config /database /resources /routes /...
图片存储在root/main/public/assets/img/packages/img.jpg,期望通过http://web.test/assets/img/packages/img.jpg访问,但系统实际尝试从root/assets/img/packages/img.jpg获取资源,路径匹配错误。
尝试过的方案
- 自定义文件存储驱动
在配置中添加自定义驱动,指定资源根目录:
'custom_assets' => [ 'driver' => 'local', 'root' => public_path('assets'), ],
- .htaccess 配置
主机使用LiteSpeed服务器,无法修改服务器配置,尝试通过.htaccess重写规则:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
但配置后出现403错误。
问题根源与解决
最终发现问题出在.htaccess文件的编辑上:使用VSCode编辑时,插件自动将规则合并为单行,导致重写规则失效:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
改用记事本编辑.htaccess,恢复规则的分行格式后,配置生效,资源可以正常访问。
内容的提问来源于stack exchange,提问作者Vishal Kumar
相关产品推荐
相关产品推荐

