Routen konfigurieren
Die Datei "routes.yaml
"im Ordner ".magento/routes.yaml
"definiert Routen für Ihre Adobe Commerce in Cloud-Infrastruktur-Integrations-, Staging- und Produktionsumgebungen. Routen bestimmen, wie die Anwendung eingehende HTTP- und HTTPS-Anforderungen verarbeitet.
Die standardmäßige routes.yaml
-Datei gibt die Routenvorlagen für die Verarbeitung von HTTP-Anfragen als HTTPS für Projekte an, die eine einzige Standarddomäne haben, und für Projekte, die für mehrere Domänen konfiguriert sind:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://{all}/":
type: upstream
upstream: "mymagento:http"
Verwenden Sie die CLI magento-cloud
, um eine Liste der konfigurierten Routen anzuzeigen:
magento-cloud environment:routes
+-------------------+----------+---------------+
| Route | Type | To |
+-------------------+----------+---------------+
| http://{default}/ | upstream | mymagento |
+-------------------+----------+---------------+
Konfigurationsaktualisierungen für Pro-Umgebungen
routes.yaml
und die Cron-Konfiguration in der Datei .magento.app.yaml
zu aktualisieren. Adobe empfiehlt, die YAML-Konfigurationsdateien in einer Integrationsumgebung zu aktualisieren und zu testen und anschließend Änderungen in der Staging-Umgebung bereitzustellen. Wenn Ihre Änderungen nach der erneuten Bereitstellung nicht auf Staging-Sites angewendet werden und keine zugehörigen Fehlermeldungen im Protokoll vorhanden sind, senden Sie ein Adobe Commerce-Supportticket 🔗, in dem die versucht wurde, die Konfigurationsänderungen zu beschreiben. Schließen Sie alle aktualisierten YAML-Konfigurationsdateien in das Ticket ein.Routenvorlagen
Die Datei "routes.yaml
" ist eine Liste mit Vorlagenrouten und ihren Konfigurationen. Sie können die folgenden Platzhalter in Routenvorlagen verwenden:
-
Der Platzhalter
{default}
stellt den qualifizierten Domänennamen dar, der als Standard für das Projekt konfiguriert wurde.Beispiel: ein Projekt mit der Standarddomäne
example.com
und den folgenden Routenvorlagen:code language-text https://www.{default}/ https://{default}/blog
Diese Vorlagen werden in einer Produktionsumgebung zu den folgenden URLs aufgelöst:
code language-text https://www.example.com/ https://example.com/blog
-
Der Platzhalter
{all}
stellt alle für das Projekt konfigurierten Domänennamen dar.Beispiel: ein Projekt mit den Domänen
example.com
undexample1.com
mit den folgenden Routenvorlagen:code language-text https://www.{all}/ https://{all}/blog
Diese Vorlagen werden für alle Domänen im Projekt in die folgenden Routen aufgelöst:
code language-text https://www.example.com/ https://www.example1.com/ https://example.com/blog https://example1.com/blog
Der Platzhalter
{all}
ist für Projekte nützlich, die für mehrere Domänen konfiguriert sind. In einer Nicht-Produktions-Verzweigung wird{all}
durch die Projekt-ID und die Umgebungs-ID für jede Domäne ersetzt.Wenn für ein Projekt keine Domänen konfiguriert sind, was bei der Entwicklung üblich ist, verhält sich der Platzhalter
{all}
genauso wie der Platzhalter{default}
.
Adobe Commerce generiert außerdem Routen für jede aktive Integrationsumgebung. In Integrationsumgebungen wird der Platzhalter {default}
durch den folgenden Domänennamen ersetzt:
[branch]-[per-environment-random-string]-[project-id].[region].magentosite.cloud
Die Verzweigung refactorcss
für das im us
-Cluster gehostete mswy7hzcuhcjw
-Projekt weist beispielsweise die folgende Domäne auf:
https://refactorcss-oy3m2pq-mswy7hzcuhcjw.us.magentosite.cloud/
Schrägstrich
Routendefinitionen enthalten einen Schrägstrich, der einen Ordner oder Ordner angibt. Derselbe Inhalt kann jedoch mit oder ohne Schrägstrich bedient werden. Die folgenden URLs lösen die gleichen auf, können jedoch als zwei verschiedene URLs interpretiert werden:
https://www.example.com/blog/
https://www.example.com/blog
Routenprotokolle
Alle Umgebungen unterstützen automatisch sowohl HTTP als auch HTTPS.
-
Wenn in der Konfiguration nur die HTTP-Route angegeben wird, werden automatisch HTTPS-Routen erstellt, sodass die Site sowohl über HTTP als auch über HTTPS bereitgestellt werden kann, ohne dass Umleitungen erforderlich sind.
Beispiel: ein Projekt mit der Standarddomäne
example.com
und der folgenden Routenvorlage:code language-text http://{default}/
Diese Vorlage wird zu den folgenden URLs aufgelöst:
code language-text http://example.com/ https://example.com/
-
Wenn die Konfiguration nur die HTTPS-Route angibt, werden alle HTTP-Anforderungen zu HTTPS umgeleitet.
Beispiel: ein Projekt mit der Standarddomäne
example.com
mit der folgenden Routenvorlage:code language-text https://{default}/
Diese Vorlage wird in die folgende URL aufgelöst:
code language-text https://example.com/
Außerdem wird die folgende Umleitung verarbeitet:
http://example.com/
==>https://example.com/
Servieren Sie alle Seiten über TLS. Für diese Konfiguration müssen Sie Umleitungen für alle unverschlüsselten Anforderungen mit einer der folgenden Methoden an die TLS-Entsprechung konfigurieren:
-
Ändern Sie das Protokoll in der Datei
routes.yaml
in HTTPS.code language-yaml "https://{default}/": type: upstream upstream: "mymagento:http" "https://{all}/": type: upstream upstream: "mymagento:http"
-
Aktivieren Sie für Staging- und Produktionsumgebungen die Option TLS auf Schnell erzwingen in der Admin-Benutzeroberfläche. Wenn Sie diese Option verwenden, verarbeitet die Umleitung schnell zu HTTPS, sodass Sie die
routes.yaml
-Konfiguration nicht aktualisieren müssen.
Routenoptionen
Konfigurieren Sie die einzelnen Routen separat mit den folgenden Eigenschaften:
type: upstream
upstream
, die den Namen der Anwendung (wie in .magento.app.yaml
definiert) gefolgt vom Endpunkt :http
angibt.type: redirect
to
, bei der es sich um eine HTTP-Weiterleitung zu einer anderen durch die Vorlage identifizierten Route handelt.cache:
redirects:
ssi:
Einfache Routen
In den folgenden Beispielen leitet die Routenkonfiguration die Apex-Domäne und die www
-Subdomäne an die mymagento
-Anwendung weiter. Diese Route leitet keine HTTPS-Anforderungen weiter.
Beispiel 1:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://www.{default}/":
type: redirect
to: "http://{default}/"
In diesem Beispiel folgt das Anfrage-Routing den folgenden Regeln:
-
Der Server antwortet direkt auf Anfragen mit dem folgenden URL-Muster:
code language-text http://example.com/path
-
Der Server gibt für Anfragen mit dem folgenden URL-Muster eine Umleitung 301 aus:
code language-text http://www.example.com/mypath
Diese Anfragen werden an die Apex-Domäne weitergeleitet, z. B.:
code language-text http://example.com/mypath
Im folgenden Beispiel leitet die Routenkonfiguration keine URLs von der Domäne www zur Apex-Domäne weiter. Stattdessen werden Anforderungen sowohl von der www- als auch von der apex-Domäne bereitgestellt.
Beispiel 2:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://www.{default}/":
type: upstream
upstream: "mymagento:http"
Platzhalterrouten
Adobe Commerce in der Cloud-Infrastruktur unterstützt Platzhalterrouten, sodass Sie mehrere Subdomänen derselben Anwendung zuordnen können. Dies funktioniert bei Umleitungs- und Upstream-Routen. Der Route wird ein Sternchen (*) vorangestellt. Beispielsweise werden die folgenden Routen zu derselben Anwendung geleitet:
*.example.com
www.example.com
blog.example.com
us.example.com
Dies dient als Sammeldomäne in einer Live-Umgebung.
Routing einer nicht zugeordneten Domäne
Sie können über einen Punkt (.
) zu einem System weiterleiten, das keiner Domäne zugeordnet ist, um die Subdomain zu trennen.
Beispiel:
Ein Projekt mit dem Zweig add-theme
leitet zu der folgenden URL weiter:
http://add-theme-projectID.us.magento.com/
Wenn Sie die folgende Routenvorlage definieren:
http://www.{default}/
Die Route wird zu der folgenden URL aufgelöst:
http://www.add-theme-projectID.us.magento.com/
Sie können jede Subdomäne einfügen, bevor der Punkt und die Route aufgelöst werden.
Beispiel:
Definieren Sie die folgende Routenvorlage:
http://*.{default}/
Diese Vorlage löst beide der folgenden URLs auf:
http://foo.add-theme-projectID.us.magentosite.cloud/
http://bar.add-theme-projectID.us.magentosite.cloud/
Sie können das Routenmuster für nicht zugeordnete Domänen anzeigen, indem Sie eine SSH-Verbindung zur Umgebung herstellen und die Routen mithilfe der CLI magento-cloud
auflisten:
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}/ |
+------------------------------------------+--------------------------------------------------------------+
Umleitungen und Caching
Wie ausführlicher unter Umleitungen erläutert, können Sie komplexe Umleitungsregeln verwalten, wie z. B. partielle Umleitungen, und Regeln für die routen basierten Caching festlegen:
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