Ziggy 路由器修改浏览器网址

问题描述 投票:0回答:0

我对 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 路由器无法识别站点的基本 url
  • 我尝试将 .env 中的 APP_URL 和 BASE_URL 更改为不同的值(有/没有 /blender)但没有成功
  • 使用 nginx 访问 blender.test 在我的个人计算机上使用 macOS 进行相同的基础安装,但公司计算机上的 Apache 无法正常工作。我必须使用 Apache,因为目标生产服务器是 Apache,对此无能为力
  • 我在没有 Vite + Inertia 的同一台计算机上安装了其他几个 Laravel 10 和 9,路由工作正常。
  • 如果将 httpd.conf 中的 Apache DocumentRoot 设置为包含我的项目的文件夹,它就可以工作,所以无论是什么搞乱了我的路由,都是 http://localhost 之后的文本

无论如何,在解决这个问题很多天之后,我猜 Laravel 10 + Vue 3 + Inertia 安装和 Apache 提供的 Ziggy 路由器中有一些东西导致了这个问题。

知道它可能是什么吗?

感谢您的宝贵时间!

laravel apache inertiajs
© www.soinside.com 2019 - 2024. All rights reserved.