UX : afficher les résultats de recherche sur URL inconnue, supprimer les 404 #57

Closed
opened 2026-05-14 08:15:20 +00:00 by cedricAbonnel · 0 comments
Owner

Comportement actuel

Quand une URL ne correspond à aucun article :

  • searchAndRedirect() cherche le meilleur match et redirige en 302 si le score est très bon (tier 1)
  • Sinon : page 404

Le visiteur est soit redirigé silencieusement vers un article qu'il n'a pas demandé, soit confronté à une erreur 404.

Comportement souhaité

À la place, afficher la page de recherche avec les termes extraits du slug de l'URL, et laisser le visiteur choisir.

  • Jamais de 404 (ni HTTP 404, ni page d'erreur)
  • Jamais de redirection automatique vers un article
  • La page de recherche s'affiche avec les résultats pré-remplis
  • Si aucun résultat : page de recherche vide avec message adapté

Zones de code à modifier

public/index.php

  1. case 'view' (article non trouvé par slug) : rediriger vers /search?q=<slug-tokenisé> au lieu de searchAndRedirect() + include 404.php
  2. case 'not_found' : même logique, construire ?q= depuis le chemin inconnu
  3. Supprimer ou garder searchAndRedirect() uniquement pour un usage interne éventuel

Extraction du terme depuis un slug (déjà dans searchAndRedirect()) :

$query = preg_replace('/[^a-zA-ZÀ-ÿ0-9\s]/u', ' ', str_replace(['-', '_', '/'], ' ', $rawPath));
$query = trim(preg_replace('/\s{2,}/', ' ', $query));
header('Location: /search?q=' . urlencode($query), true, 302);
exit;

Résultat attendu

GET /post/un-slug-inexistant
→ 302 /search?q=un+slug+inexistant

GET /une-page-quelconque-inconnue
→ 302 /search?q=une+page+quelconque+inconnue

Dans tous les cas, le visiteur voit une page utile avec des suggestions cliquables.

## Comportement actuel Quand une URL ne correspond à aucun article : - `searchAndRedirect()` cherche le meilleur match et redirige en 302 si le score est très bon (tier 1) - Sinon : page 404 Le visiteur est soit redirigé silencieusement vers un article qu'il n'a pas demandé, soit confronté à une erreur 404. ## Comportement souhaité À la place, **afficher la page de recherche** avec les termes extraits du slug de l'URL, et laisser le visiteur choisir. - Jamais de 404 (ni HTTP 404, ni page d'erreur) - Jamais de redirection automatique vers un article - La page de recherche s'affiche avec les résultats pré-remplis - Si aucun résultat : page de recherche vide avec message adapté ## Zones de code à modifier **`public/index.php`** 1. `case 'view'` (article non trouvé par slug) : rediriger vers `/search?q=<slug-tokenisé>` au lieu de `searchAndRedirect()` + `include 404.php` 2. `case 'not_found'` : même logique, construire `?q=` depuis le chemin inconnu 3. Supprimer ou garder `searchAndRedirect()` uniquement pour un usage interne éventuel **Extraction du terme depuis un slug** (déjà dans `searchAndRedirect()`) : ```php $query = preg_replace('/[^a-zA-ZÀ-ÿ0-9\s]/u', ' ', str_replace(['-', '_', '/'], ' ', $rawPath)); $query = trim(preg_replace('/\s{2,}/', ' ', $query)); header('Location: /search?q=' . urlencode($query), true, 302); exit; ``` ## Résultat attendu ``` GET /post/un-slug-inexistant → 302 /search?q=un+slug+inexistant GET /une-page-quelconque-inconnue → 302 /search?q=une+page+quelconque+inconnue ``` Dans tous les cas, le visiteur voit une page utile avec des suggestions cliquables.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/folio#57