我对 Ziggy 路由器有点头疼。 我有一个 Laravel 10 + Vue 3 + Inertia + Vite 应用程序在 http://localhost/blender/public 上运行。
在我的 .env 中,我将 APP_URL 和 BASE_URL 设置为 http://localhost/blender/public
当我用 route('dashboard') 输出一条路线时,我得到了一条正确的路线,它在我的 /routes/web.php 中定义,如果我访问该路线,它会按预期工作。
一切正常,除了在我的浏览器中显示的 URL,显然它重复了基本路径,所以我的路由 /blender/public/dashboard 显示为 /blender/public/blender/public/dashboard。该值会在页面加载后立即更改,所以我猜是某些 JS 更改了显示的 URL。
我不介意,但使用 Vue 3 + Inertia + Vite 我想利用重新加载功能,但是一旦我进行任何更改,就会弄乱路由,因为它不断附加 /blender/public 值导致404 错误。
为了让事情变得更加混乱,我尝试在根目录下创建一个 .htaccess 文件以摆脱路由的 /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>
如果我这样做并将 APP_URL 更改为简单的 http://localhost/blender 并访问该站点,我会得到一个 404 |没有找到,所以我修改了 404 模板来输出 url()->full() 并且我得到了 http://localhost/blender。如果我然后使用 prefix('blender') 为我的所有路由设置前缀,它就可以工作。
所以,这是我对这个问题的看法:
无论如何,在解决这个问题很多天之后,我猜 Laravel 10 + Vue 3 + Inertia 安装和 Apache 提供的 Ziggy 路由器中有一些东西导致了这个问题。
知道它可能是什么吗?
感谢您的宝贵时间!