Configurare le route

Il file routes.yaml nella directory .magento/routes.yaml definisce le route per gli ambienti di integrazione dell'infrastruttura cloud, staging e produzione Adobe Commerce. Le route determinano il modo in cui l'applicazione elabora le richieste HTTP e HTTPS in ingresso.

Il file predefinito routes.yaml specifica i modelli di route per l'elaborazione delle richieste HTTP come HTTPS nei progetti con un singolo dominio predefinito e nei progetti configurati per più domini:

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

Utilizzare l'interfaccia della riga di comando magento-cloud per visualizzare un elenco delle route configurate:

magento-cloud environment:routes

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

Aggiornamenti alla configurazione degli ambienti Pro

WARNING
Alcuni progetti Pro richiedono un ticket di supporto per aggiornare la configurazione della route nel file routes.yaml e la configurazione cron nel file .magento.app.yaml. L’Adobe consiglia di aggiornare e testare i file di configurazione YAML in un ambiente di integrazione, quindi di distribuire le modifiche nell’ambiente di staging. Se le modifiche non vengono applicate ai siti di gestione temporanea dopo la ridistribuzione e non sono presenti messaggi di errore correlati nel registro, è NECESSARIO Inviare un ticket di supporto Adobe Commerce che descriva le modifiche di configurazione tentate. Includi nel ticket tutti i file di configurazione YAML aggiornati.

Modelli di percorso

Il file routes.yaml è un elenco di route con modelli e relative configurazioni. Nei modelli di percorso è possibile utilizzare i segnaposto seguenti:

  • Il segnaposto {default} rappresenta il nome di dominio qualificato configurato come predefinito per il progetto.

    Ad esempio, un progetto con il dominio predefinito example.com e i seguenti modelli di route:

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

    Questi modelli vengono risolti nei seguenti URL in un ambiente di produzione:

    code language-text
    https://www.example.com/
    https://example.com/blog
    
  • Il segnaposto {all} rappresenta tutti i nomi di dominio configurati per il progetto.

    Ad esempio, un progetto con domini example.com e example1.com con i seguenti modelli di route:

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

    Questi modelli consentono di risolvere i percorsi seguenti per tutti i domini del progetto:

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

    Il segnaposto {all} è utile per i progetti configurati per più domini. In un ramo non di produzione, {all} è sostituito con l'ID progetto e l'ID ambiente per ciascun dominio.

    Se in un progetto non è configurato alcun dominio, operazione comune durante lo sviluppo, il segnaposto {all} si comporta come il segnaposto {default}.

Adobe Commerce genera inoltre route per ogni ambiente di integrazione attivo. Per gli ambienti di integrazione, il segnaposto {default} è sostituito dal seguente nome di dominio:

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

Ad esempio, il ramo refactorcss per il progetto mswy7hzcuhcjw ospitato nel cluster us ha il seguente dominio:

https://refactorcss-oy3m2pq-mswy7hzcuhcjw.us.magentosite.cloud/
NOTE
Se il progetto Cloud supporta più store, segui le istruzioni di configurazione del percorso per più siti Web o store.

Barra finale

Le definizioni di route contengono una barra finale per indicare una cartella o una directory; tuttavia, lo stesso contenuto può essere distribuito con o senza una barra finale. I seguenti URL vengono risolti nello stesso modo, ma possono essere interpretati come due URL diversi:

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

https://www.example.com/blog
TIP
È consigliabile utilizzare una barra finale per le directory, ma qualunque sia il metodo scelto, è importante mantenere la coerenza per evitare di generare due posizioni.

Protocolli di route

Tutti gli ambienti supportano sia HTTP che HTTPS automaticamente.

  • Se la configurazione specifica solo la route HTTP, le route HTTPS vengono create automaticamente, consentendo di gestire il sito sia da HTTP che da HTTPS senza richiedere reindirizzamenti.

    Ad esempio, un progetto con il dominio predefinito example.com e il seguente modello di route:

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

    Questo modello viene risolto nei seguenti URL:

    code language-text
    http://example.com/
    
    https://example.com/
    
  • Se la configurazione specifica solo la route HTTPS, tutte le richieste HTTP vengono reindirizzate a HTTPS.

    Ad esempio, un progetto con il dominio predefinito example.com con il seguente modello di route:

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

    Questo modello viene risolto nel seguente URL:

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

    Inoltre, elabora il seguente reindirizzamento:

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

Distribuisci tutte le pagine su TLS. Per questa configurazione, devi configurare i reindirizzamenti per tutte le richieste non crittografate all’equivalente TLS utilizzando uno dei seguenti metodi:

  • Modificare il protocollo in HTTPS nel file routes.yaml.

    code language-yaml
    "https://{default}/":
        type: upstream
        upstream: "mymagento:http"
    "https://{all}/":
        type: upstream
        upstream: "mymagento:http"
    
  • Per gli ambienti di staging e produzione, abilita l'opzione Force TLS on Fastly dall'interfaccia utente amministratore. Quando si utilizza questa opzione, Fastly gestisce il reindirizzamento a HTTPS, pertanto non è necessario aggiornare la configurazione routes.yaml.

Opzioni ciclo di lavorazione

Configurare ogni route separatamente utilizzando le proprietà seguenti:

Proprietà
Descrizione
type: upstream
Distribuisce un'applicazione. Inoltre, ha una proprietà upstream che specifica il nome dell'applicazione (come definito in .magento.app.yaml) seguito dall'endpoint :http.
type: redirect
Reindirizza a un'altra route. È seguito dalla proprietà to, che è un reindirizzamento HTTP a un'altra route identificata dal relativo modello.
cache:
Controlla il caching per la route.
redirects:
Controlla regole di reindirizzamento.
ssi:
Controlla l'abilitazione di Server Side Includes.

Percorsi semplici

Negli esempi seguenti, la configurazione della route indirizza il dominio apex e il sottodominio www all'applicazione mymagento. Questa route non reindirizza le richieste HTTPS.

Esempio 1:

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

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

In questo esempio, il ciclo di richieste segue le regole seguenti:

  • Il server risponde direttamente alle richieste con il seguente pattern URL:

    code language-text
    http://example.com/path
    
  • Il server genera un reindirizzamento 301 per le richieste con il seguente pattern URL:

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

    Queste richieste vengono reindirizzate al dominio apex, ad esempio:

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

Nell’esempio seguente, la configurazione della route non reindirizza gli URL dal dominio www al dominio apex. Le richieste vengono invece gestite sia dal dominio www che da quello apex.

Esempio 2:

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

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

Route con caratteri jolly

Adobe Commerce su infrastruttura cloud supporta percorsi con caratteri jolly, in modo da poter mappare più sottodomini alla stessa applicazione. Questo funziona per le route di reindirizzamento e upstream. La route deve essere preceduta da un asterisco (*). Ad esempio, le seguenti route alla stessa applicazione:

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

Questo funziona come dominio onnicomprensivo in un ambiente live.

Indirizzare un dominio non mappato

È possibile indirizzare a un sistema non mappato a un dominio utilizzando un punto (.) per separare il sottodominio.

Esempio:

Un progetto con un ramo add-theme viene indirizzato al seguente URL:

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

Se si definisce il seguente modello di ciclo di lavorazione:

http://www.{default}/

La route viene risolta nel seguente URL:

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

Puoi inserire qualsiasi sottodominio prima che il punto e la route si risolvano.

Esempio:

Definire il seguente modello di ciclo di lavorazione:

http://*.{default}/

Questo modello risolve entrambi i seguenti URL:

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

È possibile visualizzare il pattern di route per i domini non mappati stabilendo una connessione SSH all'ambiente e utilizzando la CLI magento-cloud per elencare le route:

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}/                                         |
+------------------------------------------+--------------------------------------------------------------+

Reindirizzamenti e caching

Come descritto più dettagliatamente in Reindirizzamenti, puoi gestire regole di reindirizzamento complesse, ad esempio reindirizzamenti parziali, e specificare regole per il caching basato su route:

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