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

Laravel项目本地子目录部署仅首页路由正常如何解决?

解决方案
  • 第一步:修改.htaccess配置,在RewriteEngine On下方新增一行RewriteBase /sm/,修改后的完整配置如下:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    # 新增下面这行规则
    RewriteBase /sm/
    
    # 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>
  • 第二步:修改Laravel核心文件目录下的.env配置,将APP_URL参数修改为对应路径:
APP_URL=http://localhost/sm

同步修改config/app.php文件中的url配置项,值和上述APP_URL保持一致即可。

  • 第三步:确认sm根目录下index.php的核心文件引入路径正确。如果你将Laravel核心文件放在sm目录下的子文件夹(例如命名为laravel_core),需要将原引入路径修改为实际路径:
// 路径对应你实际存放核心文件的子文件夹名称
require __DIR__.'/laravel_core/vendor/autoload.php';
$app = require_once __DIR__.'/laravel_core/bootstrap/app.php';
  • 第四步:清除Laravel缓存,在核心文件目录下执行以下命令:
php artisan config:clear
php artisan route:clear

配置完成后重启Apache服务即可正常访问所有路由,不需要手动添加前缀。

额外建议:本地开发时更推荐配置Apache虚拟主机,直接将域名根目录指向Laravel原生的public目录,不需要拆分public内容和核心文件,可避免各类路径配置问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:36:07