如何在Apache2上通过IP地址部署访问Laravel 8项目?
问题根因
你当前是将Laravel项目通过Alias挂载在IP的/api子路径下运行,Apache的重写规则默认基于请求根路径匹配,Laravel自带的默认重写规则没有适配子路径场景,会把非根路由的请求导向根路径下的index.php而非/api下的对应入口,因此只有根路由可以正常访问,其余路由全部失效。
修复步骤
- 第一步:调整
virtualhost.conf配置,将Alias规则移入VirtualHost标签内保证作用域正确,同时补充子路径对应的重写基路径配置,修改后的完整配置如下:
<VirtualHost *:80> Alias /api /var/www/api/public <Directory /var/www/api/public> Options Indexes FollowSymLinks RewriteEngine On # 新增重写基路径适配/api子路径 RewriteBase /api/ AllowOverride All Order Deny,Allow Require all granted </Directory> </VirtualHost>
- 第二步:如果完成第一步配置重启后仍未生效,修改Laravel项目
public目录下的.htaccess文件,将默认的重写规则指向子路径入口:
找到规则行RewriteRule ^ index.php [L],替换为:RewriteRule ^ /api/index.php [L] - 第三步:修改Laravel项目根目录下的
.env配置,修正项目根地址:APP_URL=http://你的服务器实际IP/api - 第四步:重启Apache服务让配置生效,对应系统命令如下:
- Debian/Ubuntu系统:
systemctl restart apache2 - CentOS/RHEL系统:
systemctl restart httpd
- Debian/Ubuntu系统:
内容的提问来源于stack exchange,提问作者Lucas Gabriel
相关产品推荐
相关产品推荐

