Laravel部署到共享主机后路由404,.htaccess开启Rewrite仍未解决
Laravel 共享主机非首页404问题排查方案
- 确认Apache mod_rewrite扩展已启用
可以在主机c面板的Apache模块配置页查看mod_rewrite是否勾选开启,也可以临时新建phpinfo页面,搜索mod_rewrite确认是否在已加载模块列表中。 - 确认.htaccess文件存放路径正确
该文件必须放在Laravel项目的public目录下,同时要确保虚拟主机的站点根目录指向public文件夹,而非项目根目录。如果主机不支持修改站点根目录,需要将public下的所有文件剪切到主机站点根目录,同步修改index.php内的项目路径指向,再把当前.htaccess文件放到站点根目录。 - 补充RewriteBase配置
现有配置未声明RewriteBase规则,若项目部署在站点子目录(例如访问路径为domain.com/blog/),需要在RewriteEngine On下方新增一行RewriteBase /blog/(替换为实际子目录路径);若为根目录部署则新增RewriteBase /。 - 确认AllowOverride规则已开启
只有Apache站点配置中AllowOverride设置为All时,.htaccess的重写规则才会生效,共享主机默认通常为开启状态,如配置无效可联系服务商确认是否开启该权限。 - 路由规则有效性测试
临时在routes/web.php中添加测试路由:
先直接访问Route::get('/test', function () { return 'route test success'; });域名/test,若仍返回404再尝试访问域名/index.php/test,如果后者可正常返回内容,即可确认是重写规则未生效,回到前面步骤排查重写相关配置即可。 - 清理路由缓存
上传项目前先在本地执行php artisan route:clear清理路由缓存,若主机支持命令行操作也可在服务端执行该命令,无命令行权限则手动删除bootstrap/cache目录下的路由缓存文件即可。
内容的提问来源于stack exchange,提问作者Osama Bot
相关产品推荐
相关产品推荐

