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

Laravel 8部署在服务器admin子文件夹时CSS和JS资源加载路径错误问题

问题定位

现有配置中admin根目录的.htaccess静态资源匹配规则逻辑错误,public目录的RewriteBase配置与实际访问路径不匹配,导致静态资源请求被错误重定向到根域名路径。

修复步骤

前置确认

确保Apache已开启mod_rewrite模块,且站点配置中AllowOverride参数设置为All,保证.htaccess规则可以生效。

1. 替换admin子文件夹下的.htaccess配置

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
    Options +FollowSymLinks
</IfModule>

RewriteEngine On
RewriteBase /admin/

# 直接放行已存在的文件/目录,终止重写
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# 静态资源请求转发到public目录
RewriteRule ^(.*\.(css|js|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot))$ public/$1 [L]

# 其他非资源请求转发到入口文件
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php [L]
</IfModule>

2. 修正public文件夹下的.htaccess配置

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>

RewriteEngine On
RewriteBase /admin/public/

# 处理授权头
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# 非目录请求移除末尾斜杠
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# 所有请求转发到前端控制器
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

3. 修正Laravel核心配置

修改config/app.php配置项:

  • 'url' => env('APP_URL', 'https://example.com/admin'),
  • 'asset_url' => env('ASSET_URL', 'https://example.com/admin'),
    同步修改项目根目录.env文件中的APP_URL参数为https://example.com/admin

4. 清理项目缓存

依次执行以下Laravel命令清理缓存:

php artisan config:clear
php artisan route:clear
php artisan view:clear

修改完成后重启Apache服务即可生效。

内容的提问来源于stack exchange,提问作者Jagdish Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:05