Solution de gestion des URLs pour la migration WordPress vers Framer
- Contexte détaillé
- Problématique WordPress → Framer
- Solution technique
- Installation et configuration
- Utilisation
- Automatisation
- Contribution
Lors de la migration d'un site WordPress vers Framer, un défi majeur se présente : la gestion des URLs. Ce projet résout spécifiquement ce problème peu documenté mais critique pour le SEO.
Dans WordPress, la gestion des URLs était simplifiée :
- Toutes les URLs étaient indexées avec un slash final (/)
- Le fichier
.htaccessgérait automatiquement les redirections - Configuration type WordPress :
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Framer traite les URLs différemment :
- Une URL avec slash final est considérée différente de la même URL sans slash
- Exemple :
/assurance-vie/≠/assurance-vie - Pas de système de redirection automatique intégré
- Impact potentiel sur le SEO existant
exemple.com/page/ ✅ Accessible directement
exemple.com/page ✅ Redirigé automatiquement vers /page/
exemple.com/page/ ✅ Accessible si configuré avec slash
exemple.com/page ❌ Erreur 404 même si /page/ existe
- Perte potentielle du référencement existant
- Fragmentation des métriques SEO
- Expérience utilisateur dégradée
Le Worker agit comme un middleware intelligent :
// Extrait du Worker
async function handleRequest(request) {
const url = new URL(request.url);
const path = url.pathname;
// Logique de redirection intelligente
if (validUrls.includes(pathWithSlash)) {
// Redirection 301 si nécessaire
}
}Base de données clé-valeur pour :
- Stockage des URLs valides
- Métadonnées de synchronisation
- Cache performant
./
├── .env # Configuration
├── app.py # API Flask
└── utils/
├── cloudflare_api.py # Interface Cloudflare
├── config.py # Gestion config
└── get_redirect_source_url.py
-
Récupération des URLs :
- Parse le sitemap Framer
- Collecte les redirections existantes
- Normalise les formats
-
Synchronisation intelligente :
- Compare les hashes pour détecter les changements
- Met à jour le KV Store si nécessaire
- Maintient les métadonnées à jour
CLOUDFLARE_ACCOUNT_ID=votre_id
CLOUDFLARE_NAMESPACE_ID=votre_namespace
CLOUDFLARE_API_TOKEN=votre_token
CLOUDFLARE_EMAIL=votre_email
GLOBAL_API_TOKEN=votre_token_global
SITEMAP_URL=https://votre-site.com/sitemap.xml# Python 3.8+ recommandé
pip install -r requirements.txt# Lancement
python app.py
# Endpoints
POST /sync-urls # Lance la synchronisation
GET /get-metadata # État actuel{
"success": true,
"metadata": {
"last_update": "2024-12-19T10:00:00",
"urls_count": 150,
"urls_hash": "abc123..."
}
}# Synchronisation quotidienne
0 0 * * * /usr/bin/curl -X POST http://localhost:5000/sync-urlsLes contributions sont bienvenues ! Particulièrement :
- Améliorations de la détection des URLs
- Optimisations de performance
- Documentation de cas d'usage Framer spécifiques
- Fork le projet
- Créez une branche (
feature/amelioration) - Testez minutieusement
- Proposez une Pull Request