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 |
[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()
| 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 },
type Props = CollectionEntry<'blog'>;
const post = Astro.props;
const { Content } = await render(post);
<BlogPost {...post.data}>
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> = {
collection: TCollectionName;
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) |
npm run build -- --verbose
# Vérification des types
# 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
- â 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 |