Hello i need to deploy react app.
To achieve that i run : "npm run build"
after that in my vhost.conf i've added vhost
<VirtualHost *:80>
ServerName hello.local
DocumentRoot c:/wamp64/www/hello_world/build
<Directory "c:/wamp64/www/hello_world/build">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
i've also added to etc/hosts hello.local
of course i've enabled mod rewrite in httpd.conf
When i run hello.local/ main page of my react app display properly, but when i want to go to react-react route path hello.local/example i received 404 not found error. Please help what can it be ? It's problem with apache configuration or react-router has some mistake ? Regards
This is a common issue that comes up for SPA. In SPA, mostly the routing happens on client side. In your case, mostly react-router
should be doing the job. Since the whole js is bundled as a single file and is served in index.html
, you need to serve index.html
for all paths that is non-existing
in your server.
You have to add a config like this
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
RewriteRule ^ /index.html [L]
So, if there is no matching path in your server, the index.html would get served. Then the javascript would execute and react-router
(client side routing) will take over and display the correct component for the route.
This is true for most SPA, where the routing happens on client side.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With