WAMP环境部署Laravel项目跨网络访问非首页路由返回404问题咨询
WAMP部署Laravel异地访问非首页404问题排查解决步骤
1. 修正虚拟主机配置
当前httpd-vhosts.conf的站点根目录指向了www根目录,不符合Laravel部署规范,且开启了MultiViews会和Laravel重写规则冲突,按如下修改配置:
<VirtualHost *:80> ServerName localhost DocumentRoot "${INSTALL_DIR}/www/laravel/itman/public" <Directory "${INSTALL_DIR}/www/laravel/itman/public/"> Options +Indexes +Includes +FollowSymLinks -MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
修改完成后重启WAMP的Apache服务。
2. 调整.htaccess重写根路径
对应虚拟主机根目录修改为Laravel public目录后,将项目public下.htaccess中的RewriteBase配置修改为根路径:
# 替换原有 RewriteBase /laravel/itman/public/ RewriteBase /
如果你不打算修改虚拟主机根目录,仍需通过http://服务器IP/laravel/itman/public路径访问项目,需确认Laravel项目.env文件中APP_URL参数配置为http://你的服务器IP/laravel/itman/public,保证生成的链接路径正确。
3. 验证重写规则是否生效
在项目public目录新建test.php写入测试内容,异地访问http://服务器IP/test.php确认可正常访问;再访问一个不存在的路径如http://服务器IP/xxx:
- 若返回Laravel框架的404页面,说明重写规则已生效
- 若返回Apache默认404页面,需确认Apache的rewrite_module已开启(WAMP托盘→Apache→Apache模块,勾选rewrite_module),且虚拟主机配置中
AllowOverride All未被其他配置覆盖。
4. 补充排查项
- 执行
php artisan route:clear清除Laravel路由缓存,避免缓存的路由规则异常 - 确认服务器防火墙未拦截80端口的外部访问请求
- 清除浏览器缓存后再测试,避免旧的301重定向缓存影响结果
内容的提问来源于stack exchange,提问作者Abbas
相关产品推荐
相关产品推荐

