How can I Route on version numbers that contain dots in React?

I am working to implement an image viewer and using React Router. Uploaded image files are of the format <name>.<type-suffix>-<date-tag>, with a period and a hypen as delimiters.

Given this route: <Route path="zoomer/:imageId" component={ Zoom }/> and this URL http://localhost:8080/zoomer/medMain.tif-1461839237863 it does not seem that the router is finding a match.

If I remove the dot and the hyphen (e.g. http://localhost:8080/zoomer/medMaintif1461839237863) routing works just fine, but I really need to keep those delimiters for semantic reasons. And URLEncode() won't help me here, either.

Is there something I need to do with the Route spec to fix this?


Adding this to your webpack devServer config also does the trick:

historyApiFallback: {
    disableDotRule: true
}

I had the same issue proved to be webpack dev server with history-api-fallback enabled failed to pass these urls to the react app. Hacked webpack config to pass these to react with:

...
devServer: {
  proxy: {
    '/*.*': { // Match all URL's with period/dot
      target: 'http://localhost:8080/',  // send to webpack dev server
      rewrite: function(req){
        req.url='index.html';  // Send to react app
      }
    }
  }
}
...