Laravel8站点URL必须携带index.php否则返回404问题如何解决?
Laravel8 不带index.php访问404问题解决方案
根因定位
你当前配置最明显的遗漏是80端口虚拟主机未配置Directory规则开启AllowOverride All,导致Apache不会读取站点public目录下的.htaccess重写规则,不带index.php的请求无法被转发到Laravel入口文件,所以返回404。
你配置中的443端口虚拟主机已正确配置Directory规则,但80端口部分缺失对应配置。
修复步骤
- 补全80端口虚拟主机配置,添加Directory块,修改后配置如下:
<VirtualHost *:80> ServerName laravel2.tst ServerAlias laravel2.bup ServerAdmin me@my-email.com DocumentRoot /var/www/laravel2.tst/htdocs/public <Directory /var/www/laravel2.tst/htdocs/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /var/www/laravel2.tst/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
- 保存配置后重启Apache服务生效:
Debian/Ubuntu系统执行:systemctl restart apache2
CentOS/RHEL系统执行:systemctl restart httpd - 验证Laravel配置:打开项目根目录
.env文件,确认APP_URL参数值为https://laravel2.tst,不要携带index.php后缀。 - 权限校验:确保Apache运行用户(通常为www-data或apache)对
/var/www/laravel2.tst/htdocs/public目录拥有读取和执行权限,目录下的.htaccess文件权限设置为644即可。 - 可选排查:如果修改后仍未生效,可以直接将.htaccess中的重写规则写入到VirtualHost的Directory块中,跳过.htaccess读取环节,验证规则是否正常运行。
内容的提问来源于stack exchange,提问作者ThurstonLevi
相关产品推荐
相关产品推荐

