Ziggy路由在Laravel+Vue+Inertia+Apache环境下的URL重复问题求助
问题:Ziggy路由在Laravel 10+Vue3+Inertia+Apache环境下的URL重复问题
环境与核心问题
- 项目技术栈:Laravel 10 + Vue 3 + Inertia + Vite
- 部署路径:
http://localhost/blender/public - .env配置:已将
APP_URL和BASE_URL设置为上述部署地址 - 异常表现:后端
route('dashboard')生成的路由地址本身正确,但页面加载后浏览器URL会自动重复基础路径,比如原本的/blender/public/dashboard会变成/blender/public/blender/public/dashboard,推测是前端JS修改导致。这直接导致Vite热重载功能失效,每次修改代码后路由会不断追加/blender/public,最终出现404错误。
已尝试的解决方案
- 在项目根目录创建
.htaccess文件,试图移除URL中的/public部分,文件内容如下:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On RewriteCond %{REQUEST_FILENAME} -d [OR] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ ^$1 [N] RewriteCond %{REQUEST_URI} (\.\w+$) [NC] RewriteRule ^(.*)$ public/$1 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php </IfModule>
- 修改
.env中的APP_URL为http://localhost/blender,但访问时出现404;自定义404模板输出url()->full()得到http://localhost/blender,给所有路由手动添加prefix('blender')后可正常访问。
关键现象梳理
- Laravel+Inertia组合无法识别Apache环境下的站点基础URL
- 修改
.env的APP_URL和BASE_URL没有起到预期作用 - 相同项目在本地macOS的Nginx环境(域名
blender.test)下运行正常,仅Apache环境异常,且生产服务器必须使用Apache - 同一电脑上其他未使用Vite+Inertia的Laravel项目,在Apache环境下路由正常
- 将Apache的
DocumentRoot直接设置为项目的public文件夹后,项目可正常运行,说明问题出在http://localhost之后的路径部分
疑问
经过排查,怀疑是Laravel 10 + Vue 3 + Inertia自带的Ziggy路由与Apache环境冲突导致该问题,请问可能的原因是什么?
内容的提问来源于stack exchange,提问作者filloy
相关产品推荐
相关产品推荐

