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

Laravel部署至共享服务器后路由404问题求助

Laravel共享服务器路由404问题解决方案
  • 确认网站根目录指向Laravel的public文件夹
    多数共享服务器默认根目录是public_html或www,而Laravel需要将public目录设为网站根目录。如果没配置,访问子路由时服务器会寻找对应物理文件夹,导致404。登录主机控制面板,修改网站根目录指向项目的public目录即可。

  • 检查public/.htaccess文件的存在与配置
    确保public目录下有.htaccess文件,且包含Laravel默认的URL重写规则:

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    

    若文件缺失,从本地项目复制或手动创建。同时确认服务器已开启mod_rewrite模块,若未开启联系主机商处理。

  • 清除并重建路由缓存
    如果部署时执行过route:cache,后续路由变更可能导致缓存异常。有SSH权限的话执行以下命令:

    php artisan route:clear
    php artisan route:cache
    

    无SSH权限可临时创建clear-cache.php文件放在项目根目录:

    <?php
    require __DIR__.'/vendor/autoload.php';
    $app = require_once __DIR__.'/bootstrap/app.php';
    $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
    $kernel->handle(
        new Symfony\Component\Console\Input\ArrayInput(['command' => 'route:clear']),
        new Symfony\Component\Console\Output\NullOutput()
    );
    echo "路由缓存已清除";
    

    访问该脚本后立即删除,避免安全风险。

  • 验证服务器PHP版本
    虽然主页能正常加载,但PHP版本过低可能引发路由解析问题。核对Laravel版本对应的PHP最低要求,确保服务器PHP版本符合标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:55:12