Skip to content

Type de ressource : Route Astro (Page SSG dynamique)
Fichier source : src/pages/blog/[...slug].astro
Statut : Actif

Route dynamique pour les articles de blog individuels. Utilise getStaticPaths pour gĂ©nĂ©rer les chemins statiques et le layout BlogPost pour le rendu. Rend le contenu de l’article via Astro content collections.

  • Afficher les articles de blog individuels
  • Utiliser SSG pour la gĂ©nĂ©ration statique des articles
  • Utiliser le layout BlogPost pour la cohĂ©rence visuelle
Propriété Valeur
URL publique /blog/[slug]
Mode de rendu SSG (getStaticPaths)
Type Page HTML
Méthode HTTP GET
Authentification requise Non
Cache Par défaut Cloudflare
[RequĂȘte utilisateur]
│
▌
[Cloudflare Pages / Edge]
│ ‱ Routage vers Astro
▌
[Astro Route (blog/[...slug].astro)]
│ ‱ getStaticPaths (build time)
│ ‱ RĂ©cupĂ©ration de l'article via props
│ ‱ Rendu du contenu via render()
▌
[Réponse HTML]
Composant RĂŽle Couche
blog/[...slug].astro Définition de la route L2 (Astro)
getStaticPaths() Génération des chemins statiques L2 (Astro)
BlogPost Layout global L2 (Astro)
---
import { type CollectionEntry, getCollection, render } from 'astro:content';
import BlogPost from '../../layouts/BlogPost.astro';
export async function getStaticPaths() {
const posts = await getCollection('blog');
return posts.map((post) => ({
params: { slug: post.id },
props: post,
}));
}
type Props = CollectionEntry<'blog'>;
const post = Astro.props;
const { Content } = await render(post);
---
<BlogPost {...post.data}>
<Content />
</BlogPost>

Aucune requĂȘte GROQ n’est utilisĂ©e (Astro content collections).

Aucune requĂȘte secondaire n’est utilisĂ©e.

// Type CollectionEntry généré par Astro
export type CollectionEntry<TCollectionName> = {
id: string;
slug: string;
body: string;
collection: TCollectionName;
data: {
title: string;
description: string;
pubDate: Date;
updatedDate?: Date;
heroImage?: ImageMetadata;
};
};
ParamĂštre Type Obligatoire Description Validation
slug string ✅ Identifiant de l’article GĂ©nĂ©rĂ© par getStaticPaths

Aucune query string n’est utilisĂ©e.

Code HTTP Condition Réponse
200 SuccĂšs Page HTML
404 Slug invalide Page 404 Astro par défaut
Mode Cache-Control CDN-Cache-Control Rationale
SSG (build time) Non configuré Non configuré Par défaut Cloudflare

Non implémenté - pas de headers de cache explicites.

Balise Source Fallback
<title> post.data.title (via layout) -
<meta name="description"> post.data.description (via layout) -
Meta tags globaux BaseHead (via layout) -
  • ✅ Cette route est-elle incluse dans le sitemap ? Oui
  • ✅ FrĂ©quence de mise Ă  jour : weekly
  • ✅ PrioritĂ© : 0.7
  • ❌ Cette route est-elle indexĂ©e par Pagefind ? Non (Pagefind non configurĂ©)
Composant Fichier RĂŽle Hydratation
BlogPost src/layouts/BlogPost.astro Layout global Aucune
Condition Comportement
AccĂšs public Page accessible sans authentification

Non applicable (slug généré par getStaticPaths).

Non implémenté dans cette route (à configurer via Middleware Cloudflare).

SymptĂŽme Cause probable Solution
Page 404 Slug invalide VĂ©rifier que l’article existe dans src/content/blog/
Build warning getStaticPaths sans prerender Ajouter export const prerender = true (non nécessaire en SSR)
Terminal window
# Logs de build
npm run build -- --verbose
# Vérification des types
npx astro check
Terminal window
# Test de la route en local
curl -I http://localhost:4321/blog/[slug]
  • ✅ Utilisation de getStaticPaths pour la gĂ©nĂ©ration statique
  • ✅ Utilisation du layout BlogPost pour la cohĂ©rence
  • ✅ Rendu du contenu via render()
  • ✅ SSG pour le rendu statique
  • ✅ Pas de JavaScript inutile
  • ✅ Ajouter des articles dans src/content/blog/
  • ✅ Rebuild nĂ©cessaire pour les nouveaux articles
  • Support du mode preview
  • Indexation Pagefind
  • Structured data (JSON-LD) pour les articles
  • ❌ Pas de support du mode preview
  • ❌ Pas d’indexation Pagefind
  • ❌ Pas de structured data (JSON-LD)
  • ⚠ Build warning : getStaticPaths ignorĂ© sans prerender explicit
  • Documentation Astro : Routing
  • Documentation Astro : getStaticPaths
  • Documentation Astro : Content Collections
  • Fichiers concernĂ©s :
    • src/pages/blog/[...slug].astro
    • src/layouts/BlogPost.astro
    • src/content/blog/
Date Version Description Auteur
2026-09-15 1.0 Création initiale Devin
Edit page

Last updated: