I have a built using create-react-app
and hosted in netlify
.
In this link it is mentioned that I need to write redirect rules for SPAs.
/* /index.html 200
But redirecting to index.html
is not working since no view is rendered with that URL.
I also tried redirecting to /
like
[[redirects]]
from = "/*"
to = "/"
but this is also not working.
How do I do a catch-all redirect for create-react-app
?
To catch all the redirects use /* /index.html 200
in _redirects
file.
According to the netlify docs, the _redirects
file should be in your root build directory.
create-react-app by default creates all build files under the folder named build
so just modify the build scripts
in package.json
to add the _redirects
in the build folder after building the app.
example.
"scripts": {
....
"build": "react-scripts build && echo '/* /index.html 200' | cat >build/_redirects ",
...
}
If you have multiple redirects to make things easier you can create a _redirects
file with all the redirects in your root(/
) folder of the CRA
then in the package.json
will become
"scripts": {
....
"build": "react-scripts build && cp _redirects build/_redirects",
...
}
make sure that the build command in your netlify is yarn run build
or npm run build
after making the changes in package.json
simply rebuild your code.
UPDATED: much better way
IN CRA(Create React App), the build script copies every file in public directory to the build folder so just put the _redirects with the rules in the public directory without changing anything and you are good to go.