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
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
eexample1.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/
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
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:
type: upstream
upstream
che specifica il nome dell'applicazione (come definito in .magento.app.yaml
) seguito dall'endpoint :http
.type: redirect
to
, che è un reindirizzamento HTTP a un'altra route identificata dal relativo modello.cache:
redirects:
ssi:
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