Laravel根项目中子项目静态资源加载失败的.htaccess配置求助
Laravel子项目静态资源无public路径无法加载的.htaccess修复方案
问题描述
我有两个Laravel项目,其中一个子项目放在根项目目录下。之前没法访问这个子项目,更新子项目里的.htaccess配置(如下)后能正常访问,但静态资源加载失败——只有带public路径的URL才能访问资源,比如https://sub_laravel_project_domain.com/public/images/logo.png,去掉public就打不开。试过Stack Overflow上的方案没用,求帮忙调整.htaccess配置。
原.htaccess配置:
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.myrootdomain.com/$1 [R,L] <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /subdirectory RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule . /index.php [L] </IfModule> RewriteCond %{HTTP_HOST} ^myrootdomain\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.myrootdomain\.com$ RewriteRule ^/?$ "https\:\/\/www\.myrootdomain\.com\/" [R=301,L]
修复后的配置
替换子项目的.htaccess为以下内容:
RewriteEngine On # 强制跳转HTTPS(如果子项目用独立域名,把这里的域名改成子项目的) RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.myrootdomain.com/$1 [R,L] # 核心:映射静态资源到public目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/subdirectory/public/%{REQUEST_URI} -f RewriteRule ^(.*)$ /subdirectory/public/$1 [L] <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /subdirectory RewriteRule ^index\.html$ - [L] # 转发路由请求到子项目的index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule . /subdirectory/index.php [L] </IfModule> # 根域名跳转规则(如果子项目用独立域名,可删除这一段) RewriteCond %{HTTP_HOST} ^myrootdomain\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.myrootdomain\.com$ RewriteRule ^/?$ "https://www.myrootdomain.com/" [R=301,L]
关键修改说明
- 静态资源映射:新增的规则会检查请求的资源是否在
public目录下存在,如果存在就自动转发过去,这样/images/logo.png会被指向/subdirectory/public/images/logo.png,不用手动加public路径。 - 入口文件路径修正:把原规则里的
/index.php改成/subdirectory/index.php,确保Apache能找到子项目的Laravel入口文件,避免路由出错。 - 域名适配:如果子项目有独立域名(比如你提到的
sub_laravel_project_domain.com),记得把强制HTTPS和根域名跳转的规则里的域名改成子项目的,否则会跳转到根项目域名。
另外,确保子项目的public目录权限正确,Apache服务有读取该目录的权限。
内容的提问来源于stack exchange,提问作者sherz
相关产品推荐
相关产品推荐

