Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
React Router: Ignorar patrón antes de ID (my-seo-url-string-84345)

Me gustaría crear un patrón de URL compatible con SEO en el lado del cliente. La identificación de un artículo se obtiene del servidor buscando la identificación.

https://www.myurl.com/854353

Me gustaría integrar el título del artículo en la URL del lado del cliente, para tener URL más amigables con SEO.

https://www.myurl.com/this-is-my-articles-name-854353

Eso significa que solo se debe considerar la última parte de la URL para obtener los datos correctamente del servidor. Todos los guiones anteriores deben ser ignorados.

¿Cómo puedo lograr esto usando React Router?

El siguiente ejemplo con el perfil de un usuario.

Así que básicamente la implementación es:

https://myurl.com/vendor/c0la

Y me gustaría adjuntar una cadena compatible con SEO. Eso significa que el enrutador solo debe considerar el "small_id", no la cadena anterior

https://myurl.com/proveedor/nombre-apellido-ubicación-otras-cosas-c0la

Aplicación.js

 <Routes> <Route exact path="/" element={<Home />} /> <Route exact path="/chats" element={<Chats />} /> <Route exact path="/profil" element={<Profile />} /> <Route path="/vendor/:small_id" element={<ViewProfile />} /> <Route exact path="/dashboard" element={<Dashboard />} /> <Route exact path="/verwaltung" element={<File />} /> </Routes>

SearchResults.js (Esto enlaza con el perfil)

 <div className="section-box profile" key={key} onClick={() => navigate('/vendor/' + user.small_id)}>

ViewProfile.js (El perfil de los usuarios encontrados)

 const { small_id } = useParams(); // Must match the pattern used in the router React.useEffect(() => { axios.get('/api/profiles/get/' + small_id) .then(res => { if (res.status === 200) { setProfile(res.data); } }) .catch(err => { //toast.error("Der Benutzer wurde nicht gefunden", { theme: 'colored' }); }) }, []);
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Así que cambiaría tu ruta a la siguiente:

 <Routes> <Route exact path="/" element={<Home />} /> <Route exact path="/chats" element={<Chats />} /> <Route exact path="/profil" element={<Profile />} /> <Route path="/vendor/:firstname-:lastname-:location-:moredata-:small_id" element={<ViewProfile />} /> <Route exact path="/dashboard" element={<Dashboard />} /> <Route exact path="/verwaltung" element={<File />} /> </Routes>

Entonces reconstruiría su enlace para incluir esos:

 <div className="section-box profile" key={key} onClick={() => navigate('/vendor/' + user.firstname + '-' + user.lastname + '-' + user.location + '-' + user.moredata + '-' + user.small_id)}>

Lo siguiente debería seguir funcionando:

 const { small_id } = useParams(); // Must match the pattern used in the router React.useEffect(() => { axios.get('/api/profiles/get/' + small_id) .then(res => { if (res.status === 200) { setProfile(res.data); } }) .catch(err => { //toast.error("Der Benutzer wurde nicht gefunden", { theme: 'colored' }); }) }, []);

** ¡Tenga en cuenta que no he probado esto!

about 4 years ago · Juan Pablo Isaza Denunciar

0

Investigué un poco y descubrí que React Router V6 ya no acepta parámetros opcionales. Así que se me ocurrió la siguiente solución:

 <Route path="/vendor/:seo+:small_id" element={<ViewProfile />} />

Eso significa que la ruta puede verse así: https://mywebsite.com/vendor/+843242

Y ":seo" es básicamente opcional. No necesita esto, si implementa el enrutamiento del servidor de esta manera:

 const { small_id } = useParams(); // Must match the pattern used in the router React.useEffect(() => { axios.get('/api/profiles/get/' + small_id) .then(res => { if (res.status === 200) { setProfile(res.data); } }) .catch(err => { toast.error("Der Benutzer wurde nicht gefunden", { theme: 'colored' }); }) }, []);

Por lo tanto, todo lo anterior a :+small_id se puede personalizar completamente con fines de SEO. Puedes enrutar lo que quieras del lado del cliente.

 <div className="section-box profile" key={key} onClick={() => navigate('/vendor/' + user.firstname + "-" + user.lastname + "-" + user.workplaces + "+" + user.small_id)}>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda