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

共享主机上Laravel项目Voyager后台403 Forbidden问题求助

我之前在共享主机部署Laravel+Voyager时也碰到过几乎一模一样的403问题,给你几个排查和解决的方向,按顺序试应该能搞定:

1. 先检查目录与文件权限

403 Forbidden最常见的原因就是权限不足,重点检查这几个地方:

  • public_html目录权限设为755,里面的.htaccess文件设为644
  • Laravel项目根目录下的storage和bootstrap/cache目录,必须设置为可写权限(推荐775,如果不行再用777),Voyager需要读写缓存、日志和上传文件,这两个目录权限不对会直接导致后台功能异常
  • storage/framework/sessions目录也要确保可写,Laravel的session存在这里,权限同样设为775

2. 确认public_html里的.htaccess配置正确

因为你把Laravel的public目录移到了public_html,要确保重写规则能正确指向Laravel的入口文件,替换public_html/.htaccess为以下内容:

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

    RewriteEngine On

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

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

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

同时要确认你的共享主机已经开启了mod_rewrite模块,不确定的话可以在public_html里新建一个phpinfo.php文件,内容为<?php phpinfo(); ?>,访问后搜索mod_rewrite,如果找不到就联系主机商开启。

3. 修正Laravel环境配置并清除缓存

  • 打开项目根目录的.env文件,确保APP_URL设置为你的域名:APP_URL=http://www.example.com
  • 清除Laravel的缓存:如果有SSH权限,直接在项目根目录运行这几个命令:
    php artisan config:clear
    php artisan cache:clear
    php artisan route:clear
    php artisan view:clear
    
    如果没有SSH权限,就在public_html里临时创建一个clear-cache.php文件,内容如下:
    <?php
    require '../vendor/autoload.php';
    $app = require_once '../bootstrap/app.php';
    $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
    
    // 清除各类缓存
    $commands = ['config:clear', 'cache:clear', 'route:clear', 'view:clear'];
    foreach ($commands as $command) {
        $kernel->handle(
            new Symfony\Component\Console\Input\ArrayInput(['command' => $command]),
            new Symfony\Component\Console\Output\NullOutput
        );
    }
    echo "缓存已清除,请删除此文件!";
    ?>
    
    访问这个文件一次后立刻删除,避免安全风险。

4. 检查ModSecurity是否拦截请求

有些共享主机默认开启了ModSecurity,会误判Laravel的登录请求为恶意请求,导致跳转后返回403。可以临时关闭试试:

  • 在public_html/.htaccess末尾添加以下内容:
    <IfModule mod_security2.c>
        SecRuleEngine Off
    </IfModule>
    
    如果解决了问题,再联系主机商调整ModSecurity规则,不要长期关闭。

5. 确认文件所有者正确

如果是通过FTP上传的项目文件,可能文件所有者不是主机的运行用户,导致Laravel无法写入文件。可以通过cPanel的文件管理器修改所有者,或者用SSH命令:

chown -R your_cpanel_username:your_cpanel_username /path/to/your/laravel/project

替换your_cpanel_username为你的主机用户名,路径填你Laravel项目的根目录。

试完这些步骤后,重新访问www.example.com/admin/login,应该就能正常登录后台了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:19:13