Ionic Vue 3在Firebase上的子域上主机找不到index.html

eoigrqb6  于 2023-09-28  发布在  Ionic
关注(0)|答案(1)|浏览(149)

使用Ionic和Vue 3,我写了一个运行良好的应用程序。我现在使用相同的代码将应用程序的功能放到我的网站门户子域。我有一个第二子域(www)指向一个单独的html网站在同一个托管区域。
www.example.com -> site1
portal.example.com-> site2
一切正常。如果我访问portal.example.com,我会得到正确的主页,其中包含各种选项,我单击这些选项,然后转到相关的vue页面,例如portal.example.com/contacts。然后,我可以单击联系人,它会显示正确的页面-portal.example.com/contacts/ba 76 ea 50-e1 b6 - 414 b
这就是问题所在。如果我将该URL(portal.example.com/contacts/ba 76 ea 50-e1 b6 - 414 b)复制\粘贴到另一个浏览器窗口中,我会得到Firebase Page not Found页面:

这告诉我的是,安装Vue 3应用的index.html页面在复制粘贴并直接转到url时没有被初始化。我不知道如何告诉Vue 3应用程序如何做到这一点。我猜它应该在portal.example.com firebase.json文件中:

"hosting": [{
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites":[{
        "source": "**",
        "destination": "/index.html"
    }]
  }]

我看的是正确的地方,还是我完全走错了方向?这一点很重要,因为特定的URL会通过电子邮件发送给用户,以便他们可以点击并查看正确的数据。

amrnrhlw

amrnrhlw1#

因此,解决方案与firebase.json相关。由于托管中有多个站点,因此每个站点都有一个firebase.json,再加上一个根级别的站点。根级别firebase.json将子域Map到站点。我还需要在firebase.json根目录中添加重写部分。

{
    "hosting": [{
      "target": "www",
      "public": "public-area/dist",
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ]
    },
  {
      "target": "portal",
      "public": "portal-area/dist",
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
      "rewrites": [                      <-- added
        {                                <-- added
          "source": "**",                <-- added
          "destination": "/index.html"   <-- added
        }                                <-- added
      ]                                  <-- added
  }]
  }

相关问题