Configuration des itinéraires

Le fichier routes.yaml du répertoire .magento/routes.yaml définit les itinéraires de votre Adobe Commerce dans les environnements d’intégration, d’évaluation et de production de l’infrastructure cloud. Les itinéraires déterminent la manière dont l’application traite les requêtes HTTP et HTTPS entrantes.

Le fichier routes.yaml par défaut spécifie les modèles d’itinéraire pour le traitement des requêtes HTTP en tant que HTTPS sur les projets ayant un seul domaine par défaut et sur les projets configurés pour plusieurs domaines :

"http://{default}/":
    type: upstream
    upstream: "mymagento:http"
"http://{all}/":
    type: upstream
    upstream: "mymagento:http"

Utilisez l’interface de ligne de commande magento-cloud pour afficher la liste des itinéraires configurés :

magento-cloud environment:routes

+-------------------+----------+---------------+
| Route             | Type     | To            |
+-------------------+----------+---------------+
| http://{default}/ | upstream | mymagento     |
+-------------------+----------+---------------+

Mises à jour de configuration des environnements Pro

WARNING
Certains projets Pro ont besoin d’un ticket de support pour mettre à jour la configuration de l’itinéraire dans le fichier routes.yaml et la configuration cron dans le fichier .magento.app.yaml. Adobe recommande de mettre à jour et de tester les fichiers de configuration YAML dans un environnement d’intégration, puis de déployer les modifications dans l’environnement d’évaluation. Si vos modifications ne sont pas appliquées aux sites d’évaluation après le redéploiement et qu’il n’y a aucun message d’erreur associé dans le journal, alors vous devez envoyer un ticket d’assistance Adobe Commerce qui décrit les tentatives de modifications de configuration. Incluez tous les fichiers de configuration YAML mis à jour dans le ticket.

Modèles d’itinéraire

Le fichier routes.yaml est une liste d’itinéraires modélisés et de leurs configurations. Vous pouvez utiliser les espaces réservés suivants dans les modèles d’itinéraire :

  • L’espace réservé {default} représente le nom de domaine qualifié configuré par défaut pour le projet.

    Par exemple, un projet avec le domaine par défaut example.com et les modèles d’itinéraire suivants :

    code language-text
    https://www.{default}/
    https://{default}/blog
    

    Ces modèles se résolvent par les URL suivantes dans un environnement de production :

    code language-text
    https://www.example.com/
    https://example.com/blog
    
  • L’espace réservé {all} représente tous les noms de domaine configurés pour le projet.

    Par exemple, un projet avec des domaines example.com et example1.com avec les modèles d’itinéraire suivants :

    code language-text
    https://www.{all}/
    
    https://{all}/blog
    

    Ces modèles se résolvent par les itinéraires suivants pour tous les domaines du projet :

    code language-text
    https://www.example.com/
    
    https://www.example1.com/
    
    https://example.com/blog
    
    https://example1.com/blog
    

    L’espace réservé {all} est utile pour les projets configurés pour plusieurs domaines. Dans une branche hors production, {all} est remplacé par l’ID de projet et l’ID d’environnement pour chaque domaine.

    Si un projet ne comporte aucun domaine configuré, ce qui est courant pendant le développement, l’espace réservé {all} se comporte de la même manière que l’espace réservé {default}.

Adobe Commerce génère également des itinéraires pour chaque environnement d’intégration actif. Pour les environnements d’intégration, l’espace réservé {default} est remplacé par le nom de domaine suivant :

[branch]-[per-environment-random-string]-[project-id].[region].magentosite.cloud

Par exemple, la branche refactorcss du projet mswy7hzcuhcjw hébergée sur la grappe us possède le domaine suivant :

https://refactorcss-oy3m2pq-mswy7hzcuhcjw.us.magentosite.cloud/
NOTE
Si votre projet Cloud prend en charge plusieurs magasins, suivez les instructions de configuration d’itinéraire pour plusieurs sites web ou magasins.

Barre oblique

Les définitions d’itinéraire contiennent une barre oblique pour indiquer un dossier ou un répertoire. Toutefois, le même contenu peut être diffusé avec ou sans barre oblique. Les URL suivantes résolvent le même problème, mais peuvent être interprétées comme deux URL différentes :

https://www.example.com/blog/

https://www.example.com/blog
TIP
Il est recommandé d’utiliser une barre oblique pour les répertoires, mais quelle que soit la méthode choisie, il est important de rester cohérent pour éviter de générer deux emplacements.

Protocoles d’itinéraire

Tous les environnements prennent automatiquement en charge les protocoles HTTP et HTTPS.

  • Si la configuration spécifie uniquement l’itinéraire HTTP, les itinéraires HTTPS sont créés automatiquement, ce qui permet au site d’être diffusé à partir de HTTP et HTTPS sans nécessiter de redirections.

    Par exemple, un projet avec le domaine par défaut example.com et le modèle d’itinéraire suivant :

    code language-text
    http://{default}/
    

    Ce modèle résout les URL suivantes :

    code language-text
    http://example.com/
    
    https://example.com/
    
  • Si la configuration spécifie uniquement l’itinéraire HTTPS, toutes les requêtes HTTP redirigent vers HTTPS.

    Par exemple, un projet avec le domaine par défaut example.com avec le modèle d’itinéraire suivant :

    code language-text
    https://{default}/
    

    Ce modèle résout l’URL suivante :

    code language-text
    https://example.com/
    

    Il traite également la redirection suivante :

    http://example.com/ ==> https://example.com/

Servez toutes les pages sur TLS. Pour cette configuration, vous devez configurer des redirections pour toutes les requêtes non chiffrées vers l’équivalent TLS à l’aide de l’une des méthodes suivantes :

  • Définissez le protocole sur HTTPS dans le fichier routes.yaml.

    code language-yaml
    "https://{default}/":
        type: upstream
        upstream: "mymagento:http"
    "https://{all}/":
        type: upstream
        upstream: "mymagento:http"
    
  • Pour les environnements d’évaluation et de production, activez l’option Forcer TLS sur Fastly de l’interface utilisateur d’administration. Lorsque vous utilisez cette option, gère rapidement la redirection vers HTTPS, de sorte que vous n'avez pas à mettre à jour la configuration routes.yaml.

Options d’itinéraire

Configurez séparément chaque itinéraire à l’aide des propriétés suivantes :

Propriété
Description
type: upstream
Diffuse une application. En outre, il possède une propriété upstream qui spécifie le nom de l’application (tel que défini dans .magento.app.yaml) suivie du point de terminaison :http.
type: redirect
Redirige vers un autre itinéraire. Il est suivi de la propriété to, qui est une redirection HTTP vers un autre itinéraire identifié par son modèle.
cache:
Contrôle la mise en cache de l’itinéraire.
redirects:
Contrôle les règles de redirection.
ssi:
Contrôle l’activation de Server Side Includes.

Itinéraires simples

Dans les exemples suivants, la configuration de l’itinéraire achemine le domaine apex et le sous-domaine www vers l’application mymagento. Cet itinéraire ne redirige pas les demandes HTTPS.

Exemple 1 :

"http://{default}/":
    type: upstream
    upstream: "mymagento:http"

"http://www.{default}/":
    type: redirect
    to: "http://{default}/"

Dans cet exemple, le routage des demandes suit ces règles :

  • Le serveur répond directement aux requêtes avec le modèle d’URL suivant :

    code language-text
    http://example.com/path
    
  • Le serveur émet une 301 redirect pour les requêtes avec le modèle d’URL suivant :

    code language-text
    http://www.example.com/mypath
    

    Ces requêtes redirigent vers le domaine apex, par exemple :

    code language-text
    http://example.com/mypath
    

Dans l’exemple suivant, la configuration de l’itinéraire ne redirige pas les URL du domaine www vers le domaine apex. Au lieu de cela, les requêtes sont diffusées à partir des domaines www et apex.

Exemple 2 :

"http://{default}/":
    type: upstream
    upstream: "mymagento:http"

"http://www.{default}/":
    type: upstream
    upstream: "mymagento:http"

Itinéraires génériques

Adobe Commerce sur l’infrastructure cloud prend en charge les itinéraires génériques, de sorte que vous pouvez mapper plusieurs sous-domaines à la même application. Cela fonctionne pour les itinéraires de redirection et en amont. Vous ajoutez un astérisque (*) à l’itinéraire. Par exemple, les itinéraires suivants vers la même application :

  • *.example.com
  • www.example.com
  • blog.example.com
  • us.example.com

Cela fonctionne comme un domaine fourre-tout dans un environnement en ligne.

Routage d’un domaine non mappé

Vous pouvez acheminer vers un système qui n’est pas mappé à un domaine à l’aide d’un point (.) pour séparer le sous-domaine.

Exemple :

Un projet avec une branche add-theme achemine vers l’URL suivante :

http://add-theme-projectID.us.magento.com/

Si vous définissez le modèle d’itinéraire suivant :

http://www.{default}/

L’itinéraire correspond à l’URL suivante :

http://www.add-theme-projectID.us.magento.com/

Vous pouvez insérer n’importe quel sous-domaine avant que le point et l’itinéraire ne soient résolus.

Exemple :

Définissez le modèle d’itinéraire suivant :

http://*.{default}/

Ce modèle résout les deux URL suivantes :

http://foo.add-theme-projectID.us.magentosite.cloud/
http://bar.add-theme-projectID.us.magentosite.cloud/

Vous pouvez afficher le modèle d’itinéraire pour les domaines non mappés en établissant une connexion SSH à l’environnement et en utilisant l’interface de ligne de commande magento-cloud pour répertorier les itinéraires :

web@mymagento.0:~$ vendor/bin/ece-tools env:config:show routes

Magento Cloud Routes:
+------------------------------------------+--------------------------------------------------------------+
| Route configuration                      | Value                                                        |
+------------------------------------------+--------------------------------------------------------------+
| http://www.add-theme-projectID.us.magento.com/:                                                         |
+------------------------------------------+--------------------------------------------------------------+
| primary                                  | false                                                        |
| id                                       | null                                                         |
| attributes                               |                                                              |
| type                                     | upstream                                                     |
| to                                       | mymagento                                                    |
| original_url                             | https:/{default}/                                            |
+------------------------------------------+--------------------------------------------------------------+
| https://*.add-theme-projectID.us.magentosite.cloud/:                                                    |
+------------------------------------------+--------------------------------------------------------------+
| primary                                  | false                                                        |
| id                                       | null                                                         |
| attributes                               |                                                              |
| type                                     | upstream                                                     |
| to                                       | mymagento                                                    |
| original_url                             | https://*.{default}/                                         |
+------------------------------------------+--------------------------------------------------------------+

Redirections et mise en cache

Comme expliqué plus en détail dans la section Redirections, vous pouvez gérer des règles de redirection complexes, telles que des redirections partielles, et spécifier des règles pour la mise en cache basée sur un itinéraire :

https://www.{default}/:
    type: redirect
    to: https://{default}/
https://{default}/:
    cache:
        cookies: [""]
        default_ttl: 0
        enabled: true
        headers:
            - Accept
            - Accept-Language
    ssi:
        enabled: false
    type: upstream
    upstream: mymagento:http
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26