web-dev-qa-db-fra.com

Gatsby redirige vers la page d'accueil au lieu d'afficher la page 404

Est-il possible de rediriger l'utilisateur vers la page d'accueil (/) au lieu d'afficher la page 404?

8
Malakai

Gatsby crée une page 404 à partir de src/pages/404.jsx (ou 404.js si vous n'utilisez pas l'extension jsx). Donc, créer un composant qui redirige vers la page d'accueil devrait faire l'affaire, quelque chose comme ceci:

import React from 'react';

export default function NotFound() {
  if (typeof window !== 'undefined') {
    window.location = '/';
  }

  return null;
}
3
Gokhan Sari

D'autres réponses ici échoueront éventuellement car l'objet window n'est pas défini au moment de la génération. Utilisez-le à la place. Le crochet useEffect est équivalent à componentDidMount.

import { useEffect } from 'react';
import { navigate } from 'gatsby';

export default () => {
  useEffect(() => {
    navigate('/your-redirect/');
  }, []);
  return null;
};
11
Charming Robot

Vous pouvez effectuer les opérations suivantes:

import React from 'react'
import { Redirect } from '@reach/router'

const NotFoundPage = () => <Redirect to="/" />

export default NotFoundPage
7
Sid

Vous pouvez également le faire avec navigate() (anciennement navigateTo(), merci @pgarciacamou)

import React from 'react'
import { navigate } from 'gatsby'

const NotFoundPage = () => {
  return navigate('/')
}

export default NotFoundPage
1
Rafaell Lycan