Home > front end >  Firebase Hosting Route ReWrites (Abnormal Paths)
Firebase Hosting Route ReWrites (Abnormal Paths)

Time:09-13

I'm trying to create a firebase routing rule that will re-route any request under a specific sub-directory to one particular file on the server.

This works if I have a normal filepath (with an extension), but does not seem to work if I have removed the extension from the initial request.

Is anyone aware of how this sort of 'rewrite' logic works and is there a way to leverage in this manner?

(or am i just doing this wrong, since it's not clear to me why the first rule doesn't work either)

Using this rule-set:

    "rewrites": [
      {
        "source": "/access-token/somefolder/else.html",
        "destination": "/access-token/2.json"
      },
      {
        "regex": "^/access-token/[\\d] $",
        "destination": "/access-token/2.json"
      },
      {
        "regex": "^/access-token/[\\d] \\.json$",
        "destination": "/access-token/1.json"
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]

Results of testing:

request : https://[root]//access-token/somefolder/else.html   <-- this path does not exist, i was only using this as a test
expected: routes to 'destination'
actual  : routes to root (probably hitting final rule?)


request : https://[root]/access-token/12
expected: routes to 'destination'
actual  : routes to "404 not found"


request : https://[root]/access-token/12.json
expected: routes to 'destination'
actual  : re-routes as intended

CodePudding user response:

For the first issue, as redirects take a higher priority than rewrites, it is possible that the .html has already been stripped from the incoming URL by the time it hits the rewrite engine.

{
  "source": "/access-token/somefolder/else",
  "destination": "/access-token/2.json"
}

For the following items, don't escape the \ character and you don't need the anchors either IIRC.

{
  "regex": "/access-token/\d ",
  "destination": "/access-token/2.json"
}
{
  "regex": "/access-token/\d \.json",
  "destination": "/access-token/1.json"
}
  • Related