Search code examples
firebasefirebase-hosting

Firebase hosting rewrites working locally but not in cloud - bug?


This is my firebase.json file:

{
  "hosting": {
    "target": "md-viewer",
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
      "source": "/",
      "destination": "create_md.html"
    },
    {
      "source": "/view/*",
      "destination": "show_md.html"
    }]
  }
}

When running firebase serve, the rewrites work as expected. However, deploying and opening my app ("appname.firebaseapp.com") returns 404. The deployment is succesful since I can customize the 404 page, and access my files by asking for them directly (appname.firebaseapp.com/show_md.html, for example).

What's wrong? Shouldn't firebase serve mirror online behaviour?


Solution

  • If the "destination" key on the rewrite rule is a file, it has to be referenced with an absolute path:

        "rewrites": [
          {
          "source": "/",
          "destination": "/create_md.html"
        },
        {
          "source": "/view/**",
          "destination": "/show_md.html"
        }]
    

    Also, the "/view" rewrite needs two asterisks, according to the documentation.