Type de ressource : Route Astro (Page SSG dynamique)
Fichier source :src/pages/blog/[...slug].astro
Statut : Actif
1. Vue dâensemble
Section titled â1. Vue dâensembleâ1.1. Description
Section titled â1.1. Descriptionâ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.
1.2. Objectif
Section titled â1.2. Objectifâ- 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
1.3. Caractéristiques
Section titled â1.3. CaractĂ©ristiquesâ| 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 |
2. Architecture et flux
Section titled â2. Architecture et fluxâ[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]2.2. Composants impliquĂ©s
Section titled â2.2. Composants impliquĂ©sâ| 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) |
3. Implémentation
Section titled â3. ImplĂ©mentationâ3.1. Code de la route
Section titled â3.1. Code de la routeâ---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>4. DonnĂ©es et requĂȘtes GROQ
Section titled â4. DonnĂ©es et requĂȘtes GROQâ4.1. RequĂȘte principale
Section titled â4.1. RequĂȘte principaleâAucune requĂȘte GROQ nâest utilisĂ©e (Astro content collections).
4.2. RequĂȘtes secondaires
Section titled â4.2. RequĂȘtes secondairesâAucune requĂȘte secondaire nâest utilisĂ©e.
4.3. Types TypeScript associés
Section titled â4.3. Types TypeScript associĂ©sâ// Type CollectionEntry gĂ©nĂ©rĂ© par Astroexport type CollectionEntry<TCollectionName> = { id: string; slug: string; body: string; collection: TCollectionName; data: { title: string; description: string; pubDate: Date; updatedDate?: Date; heroImage?: ImageMetadata; };};5. ParamĂštres et validation
Section titled â5. ParamĂštres et validationâ5.1. ParamĂštres dâURL
Section titled â5.1. ParamĂštres dâURLâ| ParamĂštre | Type | Obligatoire | Description | Validation |
|---|---|---|---|---|
slug |
string |
â | Identifiant de lâarticle | GĂ©nĂ©rĂ© par getStaticPaths |
5.2. Query strings
Section titled â5.2. Query stringsâAucune query string nâest utilisĂ©e.
5.3. Gestion des erreurs
Section titled â5.3. Gestion des erreursâ| Code HTTP | Condition | RĂ©ponse |
|---|---|---|
| 200 | SuccĂšs | Page HTML |
| 404 | Slug invalide | Page 404 Astro par défaut |
6. Stratégie de cache
Section titled â6. StratĂ©gie de cacheâ6.1. En-tĂȘtes de cache
Section titled â6.1. En-tĂȘtes de cacheâ| Mode | Cache-Control |
CDN-Cache-Control |
Rationale |
|---|---|---|---|
| SSG (build time) | Non configuré | Non configuré | Par défaut Cloudflare |
6.2. Implémentation dans la route
Section titled â6.2. ImplĂ©mentation dans la routeâNon implĂ©mentĂ© - pas de headers de cache explicites.
7. SEO et métadonnées
Section titled â7. SEO et mĂ©tadonnĂ©esâ7.1. Balises meta
Section titled â7.1. Balises metaâ| Balise | Source | Fallback |
|---|---|---|
<title> |
post.data.title (via layout) |
- |
<meta name="description"> |
post.data.description (via layout) |
- |
| Meta tags globaux | BaseHead (via layout) |
- |
7.2. Sitemap
Section titled â7.2. Sitemapâ- â Cette route est-elle incluse dans le sitemap ? Oui
- â FrĂ©quence de mise Ă jour : weekly
- â PrioritĂ© : 0.7
7.3. Indexation Pagefind
Section titled â7.3. Indexation Pagefindâ- â Cette route est-elle indexĂ©e par Pagefind ? Non (Pagefind non configurĂ©)
8. Composants UI utilisés
Section titled â8. Composants UI utilisĂ©sâ| Composant | Fichier | RĂŽle | Hydratation |
|---|---|---|---|
BlogPost |
src/layouts/BlogPost.astro |
Layout global | Aucune |
9. Sécurité
Section titled â9. SĂ©curitĂ©â9.1. AccĂšs et authentification
Section titled â9.1. AccĂšs et authentificationâ| Condition | Comportement |
|---|---|
| AccĂšs public | Page accessible sans authentification |
9.2. Validation des entrées
Section titled â9.2. Validation des entrĂ©esâNon applicable (slug gĂ©nĂ©rĂ© par getStaticPaths).
9.3. En-tĂȘtes de sĂ©curitĂ©
Section titled â9.3. En-tĂȘtes de sĂ©curitĂ©âNon implĂ©mentĂ© dans cette route (Ă configurer via Middleware Cloudflare).
10. Débogage et troubleshooting
Section titled â10. DĂ©bogage et troubleshootingâ10.1. ProblĂšmes courants
Section titled â10.1. ProblĂšmes courantsâ| 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) |
10.2. Logs et monitoring
Section titled â10.2. Logs et monitoringâ# Logs de buildnpm run build -- --verbose
# Vérification des typesnpx astro check10.3. Tests manuels
Section titled â10.3. Tests manuelsâ# Test de la route en localcurl -I http://localhost:4321/blog/[slug]11. Bonnes pratiques
Section titled â11. Bonnes pratiquesâ11.1. Architecture
Section titled â11.1. Architectureâ- â Utilisation de getStaticPaths pour la gĂ©nĂ©ration statique
- â Utilisation du layout BlogPost pour la cohĂ©rence
- â Rendu du contenu via render()
11.2. Performance
Section titled â11.2. Performanceâ- â SSG pour le rendu statique
- â Pas de JavaScript inutile
11.3. Maintenance
Section titled â11.3. Maintenanceâ- â
Ajouter des articles dans
src/content/blog/ - â Rebuild nĂ©cessaire pour les nouveaux articles
12. Ăvolutions et roadmap
Section titled â12. Ăvolutions et roadmapâ12.1. AmĂ©liorations planifiĂ©es
Section titled â12.1. AmĂ©liorations planifiĂ©esâ- Support du mode preview
- Indexation Pagefind
- Structured data (JSON-LD) pour les articles
12.2. Limitations connues
Section titled â12.2. Limitations connuesâ- â Pas de support du mode preview
- â Pas dâindexation Pagefind
- â Pas de structured data (JSON-LD)
- â ïž Build warning : getStaticPaths ignorĂ© sans prerender explicit
13. Ressources liées
Section titled â13. Ressources liĂ©esâ- Documentation Astro : Routing
- Documentation Astro : getStaticPaths
- Documentation Astro : Content Collections
- Fichiers concernés :
src/pages/blog/[...slug].astrosrc/layouts/BlogPost.astrosrc/content/blog/
14. Historique des modifications
Section titled â14. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-15 | 1.0 | Création initiale | Devin |