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

Laravel 4子目录应用部署后全路由空白页问题求助

嘿,我来帮你排查这个Laravel 4部署到WordPress子目录后路由空白的问题,这种场景我碰到过好几次,咱们一步步来解决:

1. 先确认Laravel的目录结构是否正确

Laravel 4的入口是public/index.php,很多人容易犯的错是直接把整个Laravel项目丢进subdirectory里。正确的做法应该是把public文件夹里的所有内容放到subdirectory,而Laravel的核心文件(app、bootstrap、vendor这些)最好放在web根目录之外(比如上级目录),避免被直接访问。

如果已经把整个项目放在subdirectory里了,那得修改public/index.php里的路径配置:
打开public/index.php,找到这两行:

require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';

根据你的实际目录结构调整路径,比如如果核心文件就在subdirectory下,那路径要改成__DIR__.'/bootstrap/autoload.php'(去掉../)。

2. 配置子目录的重写规则(这是关键!)

服务器根目录的WordPress有自己的重写规则,会干扰子目录里Laravel的路由解析,所以得给subdirectory单独设置重写规则:

如果你用的是Apache:

在subdirectory文件夹里新建或修改.htaccess文件,内容如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /subdirectory/

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

重点是RewriteBase /subdirectory/必须和你的子目录路径完全一致,同时要确保服务器开启了mod_rewrite模块。

另外,根目录WordPress的.htaccess一般不会影响子目录,但如果有冲突,检查下它的规则里有没有全局匹配的RewriteRule,避免覆盖子目录的配置。

如果你用的是Nginx:

在服务器的Nginx配置文件里,给subdirectory添加专门的location规则:

location /subdirectory {
    try_files $uri $uri/ /subdirectory/index.php?$query_string;
}

把这个规则放在WordPress的配置之前,确保请求能正确落到Laravel的入口文件上。

3. 设置Laravel的应用URL

打开app/config/app.php,找到url配置项,把它改成你的子目录完整地址:

'url' => 'http://example.com/subdirectory',

这个配置会影响Laravel生成的链接和路由解析,必须设置正确。

4. 检查文件权限

别忘了给Laravel的app/storage文件夹及其子文件夹设置写入权限(一般设为755或775,根据服务器用户组调整)。如果权限不够,Laravel没法生成缓存文件,也会导致空白页。

5. 开启调试模式看具体错误

如果还是空白,先打开调试模式找问题:
修改app/config/app.php里的debug项:

'debug' => true,

这样就能看到具体的错误信息(比如路径错误、类加载失败等),而不是一片空白。问题解决后记得把debug改回false,避免泄露敏感信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:22:36