Firebase CLI: "Настроить как одностраничное приложение (переписать все URL в /index.html)"

Я просто использовал Firebase CLI для запуска проекта статического хостинга. Что именно происходит, когда вы включаете опцию "настроить как одностраничное приложение"? Я ищу описание того, какие именно файлы были изменены, и какое влияние это оказывает на бэкэнд Firebase.

Снимок экрана команды инициализации firebase

3 ответа

Решение

Эта опция просто устанавливает флаг в firebase.json файл для перенаправления всех URL на /index.html,

"rewrites": [ {
  "source": "**",
  "destination": "/index.html"
} ]

См. Документацию Firebase Hosting для получения дополнительной информации.

Полный пример:

{
  "hosting": {
    "public": ".",
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

Если вы установите для него значение "да", тогда все недопустимые URL-адреса, например www.example.com/some-invalid-url будет перенаправлен на index.htmlвашего сайта, что хорошо. Вы также можете настроить его на свой собственный404.html.

firebase.json

{

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

Бонус: установите cleanUrls к true удалять .html расширения из ваших развернутых URL-адресов веб-сайтов, иначе все URL-адреса без .html перенаправит на index.html.

Как примечание: если вы хотите иметь рендеринг на стороне сервера (SSR), введите No и настройте rewrites следующим образом:

"rewrites": [
  {
    "function": "angularUniversalFunction",
    "source": "**"
  }
]

В конце концов, что бы вы ни выбрали, вы всегда можете изменить это в файле firebase.json.

Официальное объяснение Firebase:

Мы использовали этот вариант в прошлом году (Q1 и Q2), но, похоже, он ничего не сделал, но в настоящее время, когда мы его применяем, определенно все работает совсем по-другому. Полное официальное объяснение того, что он делает, приведено здесь:

https://firebase.google.com/docs/hosting/url-redirects-rewrites

В следующем разделе этой же страницы есть даже некоторая полезная информация об использовании заголовков.

Другие вопросы по тегам