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
相关产品推荐
相关产品推荐

