Forráskód Böngészése

rename url for SEO

Olivier Massot 1 éve
szülő
commit
b391f2890c

+ 1 - 0
.eslintrc.cjs

@@ -49,5 +49,6 @@ module.exports = {
     useSeoMeta: 'readonly',
     onNuxtReady: 'readonly',
     useLocaleHead: 'readonly',
+    useHead: 'readonly',
   },
 }

+ 14 - 0
app.vue

@@ -12,6 +12,8 @@
 </template>
 
 <script setup lang="ts">
+import UrlUtils from '~/services/utils/urlUtils'
+
 const layoutStore = useLayoutStore()
 
 layoutStore.resetAnchoredSections()
@@ -21,4 +23,16 @@ const i18nHead = useLocaleHead({
   identifierAttribute: 'id',
   addSeoAttributes: true,
 })
+
+const route = useRoute()
+const runtimeConfig = useRuntimeConfig()
+
+useHead(() => ({
+  link: [
+    {
+      rel: 'canonical',
+      href: UrlUtils.join(runtimeConfig.public.baseUrl as string, route.path),
+    },
+  ],
+}))
 </script>

+ 3 - 3
components/About/Logiciels.vue

@@ -81,7 +81,7 @@ const items: Array<{
     logoAlt:
       'Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes',
     class: 'artist',
-    link: '/opentalent_artist',
+    link: '/opentalent-artist',
   },
   {
     imageUrl:
@@ -91,7 +91,7 @@ const items: Array<{
     logoAlt:
       'Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique',
     class: 'school',
-    link: '/opentalent_school',
+    link: '/opentalent-school',
   },
   {
     imageUrl:
@@ -101,7 +101,7 @@ const items: Array<{
     logoAlt:
       'Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités',
     class: 'manager',
-    link: '/opentalent_manager',
+    link: '/opentalent-manager',
   },
 ]
 </script>

+ 3 - 3
components/Home/Caroussel.vue

@@ -115,7 +115,7 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
       '/images/pages/home/carousel/Logiciel_Opentalent_School-eleve-Conservatoire_de_Musique.png',
     imageAlt: 'Jeune élève de batterie',
     color: 'rgba(32, 147, 190, 0.4)',
-    link: '/opentalent_school',
+    link: '/opentalent-school',
     name: 'Cindy Blanchard',
     school: 'Conservatoire de Musique',
     status: 'élève',
@@ -135,7 +135,7 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
       '/images/pages/home/carousel/Logiciel_Opentalent_Artist-administrateur-Orchestre_d_harmonie.png',
     imageAlt: 'Homme jouant du banjo',
     color: 'rgba(250, 194, 10, 0.4)',
-    link: 'opentalent_artist',
+    link: 'opentalent-artist',
     name: 'Thierry Dupont ',
     school: 'Orchestre d’harmonie',
     status: 'Admin',
@@ -156,7 +156,7 @@ const carouselItems: Ref<Array<CarouselItem>> = ref([
       '/images/pages/home/carousel/Logiciel_Opentalent_Manager-Administrateur_Federation.png',
     imageAlt: 'Un homme en costard et une femme tailleur souriant',
     color: 'rgba(216, 5, 11, 0.4)',
-    link: 'opentalent_manager',
+    link: 'opentalent-manager',
     name: 'Marie Voisin',
     school: "Réseau d'organisations culturelles ",
     status: 'ADMIN',

+ 3 - 3
components/Home/Solution.vue

@@ -89,7 +89,7 @@ const solutions: Array<SolutionItem> = [
     description: 'Orchestres, chorales, compagnies et troupes artistiques',
     image: '/images/logos/opentalent/Logo_Opentalent_Artist-blanc.png',
     alt: 'Partition tenue par une femme dans une chorale',
-    link: '/opentalent_artist',
+    link: '/opentalent-artist',
     class: 'artist-image',
     solutions: [
       'Gestion des membres',
@@ -107,7 +107,7 @@ const solutions: Array<SolutionItem> = [
     description: "Petits et grands établissements d'enseignement artistique",
     image: '/images/logos/opentalent/Logo_Opentalent_School-blanc.png',
     alt: 'Deux jeunes filles jouant du violon',
-    link: '/opentalent_school',
+    link: '/opentalent-school',
     class: 'school-image',
     solutions: [
       'Gestion des membres',
@@ -125,7 +125,7 @@ const solutions: Array<SolutionItem> = [
     description: 'Fédérations, confédérations et collectivités',
     image: '/images/logos/opentalent/Logo_Opentalent_Manager-blanc.png',
     alt: 'Carte de réseau des structures de la confédération musicale de France',
-    link: '/opentalent_manager',
+    link: '/opentalent-manager',
     class: 'manager-image',
     solutions: [
       'Gestion des membres',

+ 6 - 6
components/Layout/Footer/Footer.vue

@@ -38,17 +38,17 @@
                   <h5>Logiciels</h5>
                 </v-row>
                 <v-row>
-                  <nuxt-link to="/opentalent_artist">
+                  <nuxt-link to="/opentalent-artist">
                     Opentalent Artist
                   </nuxt-link>
                 </v-row>
                 <v-row>
-                  <nuxt-link to="/opentalent_school">
+                  <nuxt-link to="/opentalent-school">
                     Opentalent School
                   </nuxt-link>
                 </v-row>
                 <v-row>
-                  <nuxt-link to="/opentalent_manager">
+                  <nuxt-link to="/opentalent-manager">
                     Opentalent Manager
                   </nuxt-link>
                 </v-row>
@@ -262,15 +262,15 @@ const footerLinks = ref([
     sublink: [
       {
         label: 'Opentalent Artist',
-        link: '/opentalent_artist',
+        link: '/opentalent-artist',
       },
       {
         label: 'Opentalent School',
-        link: '/opentalent_school',
+        link: '/opentalent-school',
       },
       {
         label: 'Opentalent Manager',
-        link: '/opentalent_manager',
+        link: '/opentalent-manager',
       },
     ],
   },

+ 6 - 6
components/Layout/Footer/Prefooter.vue

@@ -8,7 +8,7 @@ Première section du footer (galerie des logiciels)
     <LayoutContainer v-if="lgAndUp">
       <v-row>
         <v-col cols="4" class="text-center">
-          <nuxt-link to="/opentalent_artist">
+          <nuxt-link to="/opentalent-artist">
             <v-img
               src="/images/logos/opentalent/Logo_Opentalent_Artist-gris.png"
               alt="Logo Opentalent Artist - logiciel de gestion et de communication pour les orchestres, les chorales, les compagnies artistiques et troupes"
@@ -23,7 +23,7 @@ Première section du footer (galerie des logiciels)
         <v-divider :vertical="true" />
 
         <v-col cols="4" class="text-center">
-          <nuxt-link to="/opentalent_school">
+          <nuxt-link to="/opentalent-school">
             <v-img
               src="/images/logos/opentalent/Logo_Opentalent_School-gris.png"
               alt="Logo Opentalent School - logiciel de gestion et de communication pour les établissements d’enseignement artistique "
@@ -38,7 +38,7 @@ Première section du footer (galerie des logiciels)
         <v-divider :vertical="true" />
 
         <v-col cols="3" class="text-center">
-          <nuxt-link to="/opentalent_manager">
+          <nuxt-link to="/opentalent-manager">
             <v-img
               src="/images/logos/opentalent/Logo_Opentalent_Manager-gris.png"
               alt="Logo Opentalent Manager - logiciel de gestion et de communication pour les fédérations, les confédérations et les collectivités"
@@ -56,7 +56,7 @@ Première section du footer (galerie des logiciels)
     <LayoutContainer v-else>
       <v-row class="justify-center">
         <v-col cols="3" class="border-right">
-          <nuxt-link to="/opentalent_artist">
+          <nuxt-link to="/opentalent-artist">
             <v-img
               src="/images/logos/opentalent/Logo_Opentalent_Artist_Griffe.png"
             />
@@ -68,7 +68,7 @@ Première section du footer (galerie des logiciels)
         </v-col>
 
         <v-col cols="3">
-          <nuxt-link to="/opentalent_school">
+          <nuxt-link to="/opentalent-school">
             <v-img
               src="/images/logos/opentalent/Logo_Opentalent_School_Griffe.png"
             />
@@ -80,7 +80,7 @@ Première section du footer (galerie des logiciels)
         </v-col>
 
         <v-col cols="3">
-          <nuxt-link to="/opentalent_manager">
+          <nuxt-link to="/opentalent-manager">
             <v-img
               src="/images/logos/opentalent/Logo_Opentalent_Manager_Griffe.png"
             />

+ 3 - 3
components/Layout/Navigation.vue

@@ -35,9 +35,9 @@ const menu: Array<MainMenuItem> = [
   {
     label: 'Nos logiciels',
     children: [
-      { label: 'Opentalent Artist', to: '/opentalent_artist' },
-      { label: 'Opentalent School', to: '/opentalent_school' },
-      { label: 'Opentalent Manager', to: '/opentalent_manager' },
+      { label: 'Opentalent Artist', to: '/opentalent-artist' },
+      { label: 'Opentalent School', to: '/opentalent-school' },
+      { label: 'Opentalent Manager', to: '/opentalent-manager' },
     ],
   },
   {

+ 1 - 0
env/.env.ci

@@ -3,6 +3,7 @@ NUXT_ENV=dev
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=none
 NUXT_API_BASE_URL=none
 NUXT_PUBLIC_API_BASE_URL=none
 

+ 1 - 0
env/.env.docker

@@ -3,6 +3,7 @@ NUXT_ENV=dev
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://local.logiciels.opentalent.fr
 NUXT_API_BASE_URL=https://nginx_maestro
 NUXT_PUBLIC_API_BASE_URL=https://local.maestro.opentalent.fr
 

+ 1 - 0
env/.env.prod

@@ -3,6 +3,7 @@
 NUXT_ENV=production
 NUXT_DEBUG=0
 
+NUXT_BASE_URL=http://logiciels.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.opentalent.fr
 

+ 1 - 0
env/.env.test

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test.opentalent.fr
 

+ 1 - 0
env/.env.test1

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test1.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test1.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test1.opentalent.fr
 

+ 1 - 0
env/.env.test2

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test2.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test2.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test2.opentalent.fr
 

+ 1 - 0
env/.env.test3

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test3.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test3.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test3.opentalent.fr
 

+ 1 - 0
env/.env.test4

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test4.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test4.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test4.opentalent.fr
 

+ 1 - 0
env/.env.test5

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test5.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test5.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test5.opentalent.fr
 

+ 1 - 0
env/.env.test6

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test6.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test6.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test6.opentalent.fr
 

+ 1 - 0
env/.env.test7

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test7.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test7.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test7.opentalent.fr
 

+ 1 - 0
env/.env.test8

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test8.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test8.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test8.opentalent.fr
 

+ 1 - 0
env/.env.test9

@@ -2,6 +2,7 @@ NUXT_ENV=test
 NUXT_DEBUG=1
 DEBUG=1
 
+NUXT_BASE_URL=http://logiciels.test9.opentalent.fr
 NUXT_API_BASE_URL=https://maestro.test9.opentalent.fr
 NUXT_PUBLIC_API_BASE_URL=https://maestro.test9.opentalent.fr
 

+ 9 - 7
nuxt.config.ts

@@ -30,12 +30,14 @@ export default defineNuxtConfig({
   runtimeConfig: {
     // Private config that is only available on the server
     env: '',
+    baseUrl: '',
     apiBaseUrl: '',
     agendaBaseUrl: '',
     hCaptchaSiteKey: '35360874-ebb1-4748-86e3-9b156d5bfc53',
     // Config within public will be also exposed to the client
     public: {
       env: '',
+      baseUrl: '',
       apiBaseUrl: '',
       agendaBaseUrl: '',
       hCaptchaSiteKey: '35360874-ebb1-4748-86e3-9b156d5bfc53',
@@ -64,7 +66,7 @@ export default defineNuxtConfig({
         // Google Analytics
         {
           src: 'https://www.googletagmanager.com/gtag/js?id=G-L8PZ9TEFNX',
-          async: true
+          async: true,
         },
         {
           innerHTML: `
@@ -73,12 +75,12 @@ export default defineNuxtConfig({
             gtag('js', new Date());
             gtag('config', 'G-L8PZ9TEFNX');
           `,
-          type: 'text/javascript'
+          type: 'text/javascript',
         },
-         // Meta Pixel
-         {
+        // Meta Pixel
+        {
           src: 'https://connect.facebook.net/en_US/fbevents.js',
-          async: true
+          async: true,
         },
         {
           innerHTML: `
@@ -90,8 +92,8 @@ export default defineNuxtConfig({
             fbq('init', '1045498113172655');
             fbq('track', 'PageView');
           `,
-          type: 'text/javascript'
-        }
+          type: 'text/javascript',
+        },
       ],
     },
   },

+ 0 - 0
pages/CGV.vue → pages/cgv.vue


+ 0 - 0
pages/opentalent_artist.vue → pages/opentalent-artist.vue


+ 0 - 0
pages/opentalent_manager.vue → pages/opentalent-manager.vue


+ 0 - 0
pages/opentalent_school.vue → pages/opentalent-school.vue