DEV Community

Julio César Retamal Rojas
Julio César Retamal Rojas

Posted on

Fix Error 404 when Refreshing a route with React Router

Introduction:

When we develop web applications with React and use React Router for navigation, we often face the 404 error problem when refreshing the page on specific paths. This is due to how web servers handle requests and how React Router handles client side routes.

Problem:

When using React Router, the navigation between pages is done client-side, which means that the routes are handled by JavaScript in the browser. However, when refreshing the page or directly accessing a specific URL, some web servers may not understand how to handle these routes.

Solutions:

1. Configuration for Apache:

If your application is hosted on an Apache server, you can solve this problem by creating an .htaccess file with the following content:

<IfModule mod_rewrite.c>
  RewriteEngine On 
  RewriteBase / 
  RewriteRule ^index\.html$ - [L] 
  RewriteCond %{REQUEST_FILENAME} !-f 
  RewriteCond %{REQUEST_FILENAME} !-d 
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteRule . /index.html [L]
</IfModule>
Enter fullscreen mode Exit fullscreen mode

This code ensures that all requests are redirected to index.html, where React Router will take care of handling the routes.

2. Configuration for Netlify:

In the case of Netlify, you can create a _redirects file in the root of your project with the following content:

/*  /index.html 200
Enter fullscreen mode Exit fullscreen mode

This tells Netlify to redirect all requests to index.html and respond with a 200 (OK) code.

3. Configuration for Vercel:

If you decide to host your application on Vercel, you need to configure the vercel.json file with the following content:

{
  "rewrites": [
    {
      "source": "/(.*)",
      "destination": "/index.html"
    }
  ]
}

Enter fullscreen mode Exit fullscreen mode

This configuration ensures that Vercel redirects all requests to index.html, thus ensuring proper handling of React Router routes.

Conclusion:

When addressing the 404 error challenge when refreshing a page in a React application with React Router, it is critical to understand how web servers work and how we can configure them to handle routes in a way that is compatible with client-side routing. Whether for Apache, Netlify or Vercel servers, these configurations offer effective solutions to ensure smooth operation of your React application.

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (1)

Collapse
 
shakilahmed007 profile image
Shakil Ahmed

Exciting challenge! Have you explored leveraging React Router's Switch component or checking your route configurations?

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay