소스 검색

Amélioration SEO

DESKTOP-SMCIPAV\falko 5 달 전
부모
커밋
2012c68ee9

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 13 - 30
angular-client/dist/fatboar/browser/index.html


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
angular-client/dist/fatboar/browser/main-es2015.17e7966c6fd230aa9da7.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
angular-client/dist/fatboar/browser/main-es5.17e7966c6fd230aa9da7.js


+ 12 - 3
angular-client/dist/fatboar/browser/robots.txt

@@ -1,12 +1,21 @@
 User-agent: *
 Allow: /
+
+# Bloquer les pages de login et réinitialisation
 Disallow: /login
 Disallow: /login/lost-password
-Disallow: /login/reset-password
+Disallow: /login/reset-password/
+
+# Bloquer les pages privées / admin
 Disallow: /users
 Disallow: /statistique
 Disallow: /emailing
 Disallow: /assistance
-Disallow: /auth
 Disallow: /profil
-Sitemap: https://angular-preprod.foodgame.fr/sitemap.xml
+Disallow: /admin
+
+# Ne pas bloquer /auth si elle est publique
+# Disallow: /auth ← à commenter ou supprimer si accessible publiquement
+
+# Sitemap pour Google
+Sitemap: https://angular-preprod.foodgame.fr/sitemap.xml

+ 47 - 82
angular-client/dist/fatboar/browser/sitemap.xml

@@ -1,89 +1,54 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/</loc>
-        <changefreq>daily</changefreq>
-        <priority>1.0</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/login</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/login/lost-password</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/login/reset-password/:token</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/register</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/cgu</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/mention-legales</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/politique-de-confidentialite</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/admin</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/users</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/statistique</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/emailing</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/assistance</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/contact</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
+  <!-- Accueil -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/</loc>
+    <changefreq>daily</changefreq>
+    <priority>1.0</priority>
+  </url>
 
-    <!-- Autres routes -->
-    
-    <!-- Auth -->
-    <url><loc>https://angular-preprod.foodgame.fr/auth</loc></url>
+  <!-- Inscription (OK pour l’indexation) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/register</loc>
+    <changefreq>weekly</changefreq>
+    <priority>0.8</priority>
+  </url>
 
-    <!-- Tirage -->
-    <url><loc>https://angular-preprod.foodgame.fr/tirage</loc></url>
+  <!-- Pages d'information légales (OK pour indexation) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/cgu</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/mention-legales</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/politique-de-confidentialite</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
 
-    <!-- Profil -->
-    <url><loc>https://angular-preprod.foodgame.fr/profil</loc></url>
+  <!-- Contact (OK) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/contact</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
 
-    <!-- Not Found -->
-    <!-- Cette route n'a pas besoin d'être incluse dans le sitemap -->
-    
-</urlset>
+  <!-- Tirage (visible publiquement ?) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/tirage</loc>
+    <changefreq>weekly</changefreq>
+    <priority>0.6</priority>
+  </url>
 
+  <!-- Auth (si accessible publiquement) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/auth</loc>
+    <changefreq>weekly</changefreq>
+    <priority>0.7</priority>
+  </url>
+</urlset>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 1
angular-client/dist/fatboar/server/main.js


+ 167 - 80
angular-client/src/app/app-routing.module.ts

@@ -2,10 +2,10 @@ import { NgModule } from '@angular/core';
 import { Routes, RouterModule } from '@angular/router';
 
 import { HomeComponent } from './components/home/home.component';
-import { LoginComponent } from 'src/app/components/login/login.component';
+import { LoginComponent } from './components/login/login.component';
 import { LostPasswordComponent } from './components/login/lost-password/lost-password.component';
 import { ResetPasswordComponent } from './components/login/reset-password/reset-password.component';
-import { RegisterComponent } from 'src/app/components/register/register.component';
+import { RegisterComponent } from './components/register/register.component';
 import { CguComponent } from './components/shared/cgu/cgu.component';
 import { MentionsLegalesComponent } from './components/shared/mentions-legales/mentions-legales.component';
 import { PolitiqueConfidentialiteComponent } from './components/shared/politique-confidentialite/politique-confidentialite.component';
@@ -14,7 +14,7 @@ import { UsersComponent } from './components/admin/users/users.component';
 import { StatisticComponent } from './components/admin/statistic/statistic.component';
 import { EmailingComponent } from './components/admin/emailing/emailing.component';
 import { AssistanceComponent } from './components/admin/assistance/assistance.component';
-import { ContactComponent } from 'src/app/components/shared/contact/contact.component';
+import { ContactComponent } from './components/shared/contact/contact.component';
 import { GainComponent } from './components/auth/gain/gain.component';
 import { TirageComponent } from './components/auth/tirage/tirage.component';
 import { ProfilComponent } from './components/auth/profil/profil.component';
@@ -22,93 +22,180 @@ import { NotFoundComponent } from './components/shared/not-found/not-found.compo
 import { AuthGuard } from './guards/auth.guard';
 
 const routes: Routes = [
-  { 
-    path: '', 
+  {
+    path: '',
     component: HomeComponent,
     data: {
       title: 'Fatboar - Jeu-Concours',
       description: 'Participez à des concours exclusifs pour gagner un Range Rover, des menus, burgers, desserts et réductions.'
     }
   },
-  { path: 'login', component: LoginComponent, data: { title: 'Connexion - Fatboar' } },
-  { path: 'login/lost-password', component: LostPasswordComponent, data: { title: 'Mot de passe perdu - Fatboar' } },
-  { path: 'login/reset-password/:token', component: ResetPasswordComponent, data: { title: 'Réinitialisation du mot de passe - Fatboar' } },
-  { path: 'register', component: RegisterComponent, data: { title: 'Inscription - Fatboar' } },
-  { path: 'cgu', component: CguComponent, data: { title: 'CGU - Fatboar' } },
-  { path: 'mention-legales', component: MentionsLegalesComponent, data: { title: 'Mentions légales - Fatboar' } },
-  { path: 'politique-de-confidentialite', component: PolitiqueConfidentialiteComponent, data: { title: 'Politique de confidentialité - Fatboar' } },
-  { path: 'admin', component: AdminLoginComponent, data: { title: 'Admin - Fatboar' } },
-  { path: 'users', component: UsersComponent, data: { title: 'Utilisateurs - Fatboar' } },
-  { path: 'statistique', component: StatisticComponent, canActivate: [AuthGuard], data: { roles: ['admin'], title: 'Statistiques - Fatboar' } },
-  { path: 'emailing', component: EmailingComponent, canActivate: [AuthGuard], data: { roles: ['admin'], title: 'Emailing - Fatboar' } },
-  { path: 'assistance', component: AssistanceComponent, canActivate: [AuthGuard], data: { roles: ['admin'], title: 'Assistance - Fatboar' } },
-  { path: 'contact', component: ContactComponent, data: { title: 'Contact - Fatboar' } },
-  { path: 'home', component: HomeComponent, data: { title: 'Accueil - Fatboar' } },
-  { path: 'auth', component: GainComponent, data: { title: 'Jeux & Gains - Fatboar' } },
-  { path: 'tirage', component: TirageComponent, data: { title: 'Tirage - Fatboar' } },
-  { path: 'profil', component: ProfilComponent, data: { title: 'Profil - Fatboar' } },
-  { path: '**', component: NotFoundComponent, data: { title: '404 - Page non trouvée - Fatboar' } }
+  {
+    path: 'login',
+    component: LoginComponent,
+    data: {
+      title: 'Connexion - Fatboar',
+      description: 'Connectez-vous à votre compte Fatboar pour participer aux concours.',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'login/lost-password',
+    component: LostPasswordComponent,
+    data: {
+      title: 'Mot de passe perdu - Fatboar',
+      description: 'Réinitialisez votre mot de passe Fatboar.',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'login/reset-password/:token',
+    component: ResetPasswordComponent,
+    data: {
+      title: 'Réinitialisation du mot de passe - Fatboar',
+      description: 'Choisissez un nouveau mot de passe pour votre compte Fatboar.',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'register',
+    component: RegisterComponent,
+    data: {
+      title: 'Inscription - Fatboar',
+      description: 'Créez un compte Fatboar et tentez de gagner un Range Rover !'
+    }
+  },
+  {
+    path: 'cgu',
+    component: CguComponent,
+    data: {
+      title: 'CGU - Fatboar',
+      description: 'Conditions générales d’utilisation du site Fatboar.'
+    }
+  },
+  {
+    path: 'mention-legales',
+    component: MentionsLegalesComponent,
+    data: {
+      title: 'Mentions légales - Fatboar',
+      description: 'Informations légales et coordonnées de l’éditeur du site.'
+    }
+  },
+  {
+    path: 'politique-de-confidentialite',
+    component: PolitiqueConfidentialiteComponent,
+    data: {
+      title: 'Politique de confidentialité - Fatboar',
+      description: 'Comment Fatboar protège vos données personnelles.'
+    }
+  },
+  {
+    path: 'admin',
+    component: AdminLoginComponent,
+    data: {
+      title: 'Administration - Fatboar',
+      description: 'Espace réservé aux administrateurs du site.',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'users',
+    component: UsersComponent,
+    data: {
+      title: 'Utilisateurs - Fatboar',
+      description: 'Gestion des utilisateurs (admin uniquement).',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'statistique',
+    component: StatisticComponent,
+    canActivate: [AuthGuard],
+    data: {
+      roles: ['admin'],
+      title: 'Statistiques - Fatboar',
+      description: 'Statistiques détaillées du concours.',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'emailing',
+    component: EmailingComponent,
+    canActivate: [AuthGuard],
+    data: {
+      roles: ['admin'],
+      title: 'Emailing - Fatboar',
+      description: 'Campagnes d’emailing pour les participants.',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'assistance',
+    component: AssistanceComponent,
+    canActivate: [AuthGuard],
+    data: {
+      roles: ['admin'],
+      title: 'Assistance - Fatboar',
+      description: 'Assistance technique (admin uniquement).',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: 'contact',
+    component: ContactComponent,
+    data: {
+      title: 'Contact - Fatboar',
+      description: 'Contactez notre équipe pour toute question sur le concours Fatboar.'
+    }
+  },
+  {
+    path: 'home',
+    component: HomeComponent,
+    data: {
+      title: 'Accueil - Fatboar',
+      description: 'Découvrez le jeu concours Fatboar et ses nombreuses récompenses.'
+    }
+  },
+  {
+    path: 'auth',
+    component: GainComponent,
+    data: {
+      title: 'Jeux & Gains - Fatboar',
+      description: 'Accédez à vos jeux, résultats et récompenses.'
+    }
+  },
+  {
+    path: 'tirage',
+    component: TirageComponent,
+    data: {
+      title: 'Tirage - Fatboar',
+      description: 'Résultats des tirages au sort Fatboar en temps réel.'
+    }
+  },
+  {
+    path: 'profil',
+    component: ProfilComponent,
+    data: {
+      title: 'Profil - Fatboar',
+      description: 'Gérez vos informations personnelles et suivez votre participation.',
+      robots: 'noindex'
+    }
+  },
+  {
+    path: '**',
+    component: NotFoundComponent,
+    data: {
+      title: '404 - Page non trouvée - Fatboar',
+      description: 'Oups ! La page que vous cherchez n’existe pas.',
+      robots: 'noindex'
+    }
+  }
 ];
 
 @NgModule({
   imports: [RouterModule.forRoot(routes, {
-    initialNavigation: 'enabled' // Important pour SSR
+    initialNavigation: 'enabled'
   })],
   exports: [RouterModule]
 })
-export class AppRoutingModule { }
-
-// import { ResetPasswordComponent } from './components/login/reset-password/reset-password.component';
-// import { LostPasswordComponent } from './components/login/lost-password/lost-password.component';
-// import { AssistanceComponent } from './components/admin/assistance/assistance.component';
-// import { PolitiqueConfidentialiteComponent } from './components/shared/politique-confidentialite/politique-confidentialite.component';
-// import { MentionsLegalesComponent } from './components/shared/mentions-legales/mentions-legales.component';
-// import { CguComponent } from './components/shared/cgu/cgu.component';
-// import { EmailingComponent } from './components/admin/emailing/emailing.component';
-// import { StatisticComponent } from './components/admin/statistic/statistic.component';
-// import { ProfilComponent } from './components/auth/profil/profil.component';
-// import { GainComponent } from './components/auth/gain/gain.component';
-// import { UsersComponent } from './components/admin/users/users.component';
-// import { NotFoundComponent } from './components/shared/not-found/not-found.component';
-// import { NgModule } from '@angular/core';
-// import { Routes, RouterModule } from '@angular/router';
-// import { LoginComponent } from 'src/app/components/login/login.component';
-// import { RegisterComponent } from 'src/app/components/register/register.component';
-// //import { NavbarComponent } from 'src/app/components/shared/navbar/navbar.component';
-// import { ContactComponent } from 'src/app/components/shared/contact/contact.component';
-// import { HomeComponent } from './components/home/home.component';
-// import { AuthGuard } from './guards/auth.guard';
-// import { AdminLoginComponent } from './components/admin/admin-login/admin-login.component';
-// import { TirageComponent } from './components/auth/tirage/tirage.component';
-
-// const routes: Routes = [
-//   { path: '', component: HomeComponent},
-//   { path: 'login', component: LoginComponent },
-//   { path: 'login/lost-password', component: LostPasswordComponent},
-//   { path: 'login/reset-password/:token', component: ResetPasswordComponent},
-//   { path: 'register', component: RegisterComponent},
-//   { path: 'cgu', component: CguComponent},
-//   { path: 'mention-legales', component: MentionsLegalesComponent},
-//   { path: 'politique-de-confidentialite', component: PolitiqueConfidentialiteComponent},
-//   { path: 'admin', component: AdminLoginComponent },
-
-//   { path: 'users', component: UsersComponent },
-//   { path: 'statistique', component: StatisticComponent, canActivate: [AuthGuard], data: {roles: ['admin'] }},
-//   { path: 'emailing', component: EmailingComponent,  canActivate: [AuthGuard], data: {roles: ['admin'] }},
-//   { path: 'assistance', component: AssistanceComponent, canActivate: [AuthGuard], data: {roles: ['admin'] }},
-//   { path: 'contact', component: ContactComponent },
-//   { path: 'home', component: HomeComponent },
-//   { path: 'auth', component: GainComponent},
-//   { path: 'tirage', component: TirageComponent},
-//   { path: 'profil', component: ProfilComponent },
-//   { path: '**', component: NotFoundComponent }
-// ];
-
-// @NgModule({
-//   imports: [RouterModule.forRoot(routes, {
-//     initialNavigation: 'enabled'
-// })],
-//   exports: [RouterModule]
-// })
-// export class AppRoutingModule { }
-
+export class AppRoutingModule {}

+ 13 - 3
angular-client/src/app/app.component.ts

@@ -16,7 +16,6 @@ export class AppComponent implements OnInit {
   ) {}
 
   ngOnInit() {
-    // Surveille les changements de route pour mettre à jour le SEO dynamiquement
     this.router.events.pipe(
       filter(event => event instanceof NavigationEnd),
       map(() => {
@@ -28,16 +27,27 @@ export class AppComponent implements OnInit {
       }),
       mergeMap(route => route.data)
     ).subscribe(data => {
-      // Mise à jour du titre
+      // 🔹 Met à jour le <title>
       if (data['title']) {
         this.seoService.updateTitle(data['title']);
       }
-      // Mise à jour de la meta description
+
+      // 🔹 Met à jour la balise <meta name="description">
       if (data['description']) {
         this.seoService.updateMetaTags([
           { name: 'description', content: data['description'] }
         ]);
       }
+
+      // 🔹 Met à jour la balise <meta name="robots"> (si présente)
+      if (data['robots']) {
+        this.seoService.updateMetaTags([
+          { name: 'robots', content: data['robots'] }
+        ]);
+      }
+
+      // 🔹 Ajoute ou met à jour la balise <link rel="canonical">
+      this.seoService.setCanonical(`https://angular-preprod.foodgame.fr${this.router.url}`);
     });
   }
 }

+ 32 - 4
angular-client/src/app/services/seo.service.ts

@@ -1,5 +1,3 @@
-// src/app/services/seo.service.ts
-
 import { Injectable } from '@angular/core';
 import { Title, Meta } from '@angular/platform-browser';
 
@@ -13,20 +11,33 @@ export class SeoService {
     private metaService: Meta
   ) {}
 
+  /** 🔹 Met à jour le <title> de la page */
   updateTitle(title: string): void {
     this.titleService.setTitle(title);
+    this.updateMetaTag('og:title', title);
+    this.updateMetaTag('twitter:title', title);
   }
 
+  /** 🔹 Met à jour la meta description */
   updateDescription(description: string): void {
-    this.metaService.updateTag({ name: 'description', content: description });
+    this.updateMetaTag('description', description);
+    this.updateMetaTag('og:description', description);
+    this.updateMetaTag('twitter:description', description);
   }
 
+  /** 🔹 Met à jour une ou plusieurs balises meta */
   updateMetaTags(tags: { name: string; content: string }[]): void {
     tags.forEach(tag => {
-      this.metaService.updateTag(tag);
+      this.metaService.updateTag({ name: tag.name, content: tag.content });
     });
   }
 
+  /** 🔹 Met à jour une balise meta unique */
+  updateMetaTag(name: string, content: string): void {
+    this.metaService.updateTag({ name, content });
+  }
+
+  /** 🔹 Définit ou met à jour l’URL canonique */
   setCanonical(url: string): void {
     let link: HTMLLinkElement = document.querySelector("link[rel='canonical']");
     if (link) {
@@ -37,5 +48,22 @@ export class SeoService {
       link.setAttribute('href', url);
       document.head.appendChild(link);
     }
+    this.updateMetaTag('og:url', url);
+  }
+
+  /** 🔹 Définit l’image pour les partages sociaux (Open Graph / Twitter) */
+  setSocialImage(imageUrl: string): void {
+    this.updateMetaTag('og:image', imageUrl);
+    this.updateMetaTag('twitter:image', imageUrl);
+  }
+
+  /** 🔹 Définit le type pour Open Graph */
+  setOgType(type: string = 'website'): void {
+    this.updateMetaTag('og:type', type);
+  }
+
+  /** 🔹 Définit le format Twitter Card */
+  setTwitterCard(cardType: string = 'summary_large_image'): void {
+    this.updateMetaTag('twitter:card', cardType);
   }
 }

+ 12 - 29
angular-client/src/index.html

@@ -5,54 +5,37 @@
   <title>Fatboar</title>
   <base href="/">
   <meta name="viewport" content="width=device-width, initial-scale=1">
+
+  <!-- ✅ Balise Google Search Console -->
+  <<meta name="google-site-verification" content="_mW2uyCvzPAd_YzVLFbpW4NqfP7drTZrlWLy7cfPGB0" /> />
+
   <!-- Balises SEO génériques (seront remplacées dynamiquement par Angular SSR) -->
   <meta name="description" content="Fatboar - Participez à des concours exclusifs pour gagner un Range Rover, des menus, burgers, desserts et réductions.">
   <meta name="keywords" content="fatboar, concours, range rover, burgers, menus, réductions, restauration">
   <meta name="robots" content="index, follow">
-  <meta property="og:title" content="Fatboar - Jeu-Concours">
-  <meta property="og:description" content="Tentez votre chance pour gagner un Range Rover et d’autres prix avec Fatboar.">
-  <meta property="og:image" content="https://angular-preprod.foodgame.fr/assets/fatboar-og.jpg">
-  <meta property="og:url" content="https://angular-preprod.foodgame.fr">
-  <meta property="og:type" content="website">
-  <meta name="twitter:card" content="summary_large_image">
-  <meta name="twitter:title" content="Fatboar - Jeu-Concours">
-  <meta name="twitter:description" content="Tentez votre chance pour gagner un Range Rover et d’autres prix avec Fatboar.">
-  <meta name="twitter:image" content="https://angular-preprod.foodgame.fr/assets/fatboar-og.jpg">
-  <link rel="canonical" href="https://angular-preprod.foodgame.fr">
-  <link rel="icon" type="image/x-icon" href="favicon.ico">
-  <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
-  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
-</head>
-<body class="mat-typography">
-  <app-root></app-root>
-</body>
-</html>
 
-<!-- <!doctype html>
-<html lang="fr">
-<head>
-  <meta charset="utf-8">
-  <title>Fatboar</title>
-  <base href="/">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <meta name="description" content="Fatboar - Participez à des concours exclusifs pour gagner un Range Rover, des menus, burgers, desserts et réductions.">
-  <meta name="keywords" content="fatboar, concours, range rover, burgers, menus, réductions, restauration">
-  <meta name="robots" content="index, follow">
+  <!-- Open Graph / Facebook -->
   <meta property="og:title" content="Fatboar - Jeu-Concours">
   <meta property="og:description" content="Tentez votre chance pour gagner un Range Rover et d’autres prix avec Fatboar.">
   <meta property="og:image" content="https://angular-preprod.foodgame.fr/assets/fatboar-og.jpg">
   <meta property="og:url" content="https://angular-preprod.foodgame.fr">
   <meta property="og:type" content="website">
+
+  <!-- Twitter Card -->
   <meta name="twitter:card" content="summary_large_image">
   <meta name="twitter:title" content="Fatboar - Jeu-Concours">
   <meta name="twitter:description" content="Tentez votre chance pour gagner un Range Rover et d’autres prix avec Fatboar.">
   <meta name="twitter:image" content="https://angular-preprod.foodgame.fr/assets/fatboar-og.jpg">
+
+  <!-- Canonical & favicon -->
   <link rel="canonical" href="https://angular-preprod.foodgame.fr">
   <link rel="icon" type="image/x-icon" href="favicon.ico">
+
+  <!-- Fonts & Icons -->
   <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
   <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 </head>
 <body class="mat-typography">
   <app-root></app-root>
 </body>
-</html> -->
+</html>

+ 12 - 3
angular-client/src/robots.txt

@@ -1,12 +1,21 @@
 User-agent: *
 Allow: /
+
+# Bloquer les pages de login et réinitialisation
 Disallow: /login
 Disallow: /login/lost-password
-Disallow: /login/reset-password
+Disallow: /login/reset-password/
+
+# Bloquer les pages privées / admin
 Disallow: /users
 Disallow: /statistique
 Disallow: /emailing
 Disallow: /assistance
-Disallow: /auth
 Disallow: /profil
-Sitemap: https://angular-preprod.foodgame.fr/sitemap.xml
+Disallow: /admin
+
+# Ne pas bloquer /auth si elle est publique
+# Disallow: /auth ← à commenter ou supprimer si accessible publiquement
+
+# Sitemap pour Google
+Sitemap: https://angular-preprod.foodgame.fr/sitemap.xml

+ 47 - 82
angular-client/src/sitemap.xml

@@ -1,89 +1,54 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/</loc>
-        <changefreq>daily</changefreq>
-        <priority>1.0</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/login</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/login/lost-password</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/login/reset-password/:token</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/register</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/cgu</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/mention-legales</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/politique-de-confidentialite</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/admin</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/users</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/statistique</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/emailing</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/assistance</loc>
-        <changefreq>weekly</changefreq>
-        <priority>0.8</priority>
-    </url>
-    <url>
-        <loc>https://angular-preprod.foodgame.fr/contact</loc>
-        <changefreq>monthly</changefreq>
-        <priority>0.6</priority>
-    </url>
+  <!-- Accueil -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/</loc>
+    <changefreq>daily</changefreq>
+    <priority>1.0</priority>
+  </url>
 
-    <!-- Autres routes -->
-    
-    <!-- Auth -->
-    <url><loc>https://angular-preprod.foodgame.fr/auth</loc></url>
+  <!-- Inscription (OK pour l’indexation) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/register</loc>
+    <changefreq>weekly</changefreq>
+    <priority>0.8</priority>
+  </url>
 
-    <!-- Tirage -->
-    <url><loc>https://angular-preprod.foodgame.fr/tirage</loc></url>
+  <!-- Pages d'information légales (OK pour indexation) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/cgu</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/mention-legales</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/politique-de-confidentialite</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
 
-    <!-- Profil -->
-    <url><loc>https://angular-preprod.foodgame.fr/profil</loc></url>
+  <!-- Contact (OK) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/contact</loc>
+    <changefreq>monthly</changefreq>
+    <priority>0.6</priority>
+  </url>
 
-    <!-- Not Found -->
-    <!-- Cette route n'a pas besoin d'être incluse dans le sitemap -->
-    
-</urlset>
+  <!-- Tirage (visible publiquement ?) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/tirage</loc>
+    <changefreq>weekly</changefreq>
+    <priority>0.6</priority>
+  </url>
 
+  <!-- Auth (si accessible publiquement) -->
+  <url>
+    <loc>https://angular-preprod.foodgame.fr/auth</loc>
+    <changefreq>weekly</changefreq>
+    <priority>0.7</priority>
+  </url>
+</urlset>