Configurar rotas
O arquivo routes.yaml
no diretório .magento/routes.yaml
define as rotas do Adobe Commerce nos ambientes de Integração, Preparo e Produção da infraestrutura em nuvem. As rotas determinam como o aplicativo processa solicitações HTTP e HTTPS recebidas.
O arquivo padrão routes.yaml
especifica os modelos de rota para processar solicitações HTTP como HTTPS em projetos que têm um único domínio padrão e em projetos configurados para vários domínios:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://{all}/":
type: upstream
upstream: "mymagento:http"
Use a CLI magento-cloud
para exibir uma lista das rotas configuradas:
magento-cloud environment:routes
+-------------------+----------+---------------+
| Route | Type | To |
+-------------------+----------+---------------+
| http://{default}/ | upstream | mymagento |
+-------------------+----------+---------------+
Atualizações de configuração para ambientes Pro
routes.yaml
e a configuração cron no arquivo .magento.app.yaml
. O Adobe recomenda atualizar e testar arquivos de configuração YAML em um ambiente de Integração e, em seguida, implantar alterações no ambiente de Preparo. Se suas alterações não forem aplicadas aos sites de Preparo após a reimplantação e não houver mensagens de erro relacionadas no log, você DEVE Enviar um tíquete de Suporte da Adobe Commerce que descreva as tentativas de alterações de configuração. Inclua quaisquer arquivos de configuração YAML atualizados no ticket.Modelos de roteiro
O arquivo routes.yaml
é uma lista de rotas com modelos e suas configurações. Você pode usar os seguintes espaços reservados em modelos de rota:
-
O espaço reservado
{default}
representa o nome de domínio qualificado configurado como padrão para o projeto.Por exemplo, um projeto com o domínio padrão
example.com
e os seguintes modelos de rota:code language-text https://www.{default}/ https://{default}/blog
Esses modelos resolvem para os seguintes URLs em um ambiente de produção:
code language-text https://www.example.com/ https://example.com/blog
-
O espaço reservado
{all}
representa todos os nomes de domínio configurados para o projeto.Por exemplo, um projeto com domínios
example.com
eexample1.com
com os seguintes modelos de rota:code language-text https://www.{all}/ https://{all}/blog
Esses modelos resolvem as seguintes rotas para todos os domínios no projeto:
code language-text https://www.example.com/ https://www.example1.com/ https://example.com/blog https://example1.com/blog
O espaço reservado
{all}
é útil para projetos configurados para vários domínios. Em uma ramificação de não produção,{all}
é substituído pela ID do projeto e pela ID do ambiente para cada domínio.Se um projeto não tiver domínios configurados, o que é comum durante o desenvolvimento, o espaço reservado
{all}
se comporta da mesma forma que o espaço reservado{default}
.
O Adobe Commerce também gera rotas para cada ambiente de integração ativo. Para ambientes de integração, o espaço reservado {default}
é substituído pelo seguinte nome de domínio:
[branch]-[per-environment-random-string]-[project-id].[region].magentosite.cloud
Por exemplo, a ramificação refactorcss
do projeto mswy7hzcuhcjw
hospedado no cluster us
tem o seguinte domínio:
https://refactorcss-oy3m2pq-mswy7hzcuhcjw.us.magentosite.cloud/
Barra à direita
As definições de rota contêm uma barra à direita para indicar uma pasta ou diretório; no entanto, o mesmo conteúdo pode ser distribuído com ou sem uma barra à direita. As seguintes URLs resolvem o mesmo, mas podem ser interpretadas como duas URLs diferentes:
https://www.example.com/blog/
https://www.example.com/blog
Protocolos de rota
Todos os ambientes são compatíveis com HTTP e HTTPS automaticamente.
-
Se a configuração especificar apenas a rota HTTP, as rotas HTTPS serão criadas automaticamente, permitindo que o site seja distribuído a partir de HTTP e HTTPS sem exigir redirecionamentos.
Por exemplo, um projeto com o domínio padrão
example.com
e o seguinte modelo de rota:code language-text http://{default}/
Esse modelo resolve os seguintes URLs:
code language-text http://example.com/ https://example.com/
-
Se a configuração especificar apenas a rota HTTPS, todas as solicitações HTTP serão redirecionadas para HTTPS.
Por exemplo, um projeto com o domínio padrão
example.com
com o seguinte modelo de rota:code language-text https://{default}/
Esse modelo resolve para o seguinte URL:
code language-text https://example.com/
Ele também processa o seguinte redirecionamento:
http://example.com/
==>https://example.com/
Servir todas as páginas por TLS. Para essa configuração, você deve configurar redirecionamentos para todas as solicitações não criptografadas para o equivalente TLS usando um dos seguintes métodos:
-
Altere o protocolo para HTTPS no arquivo
routes.yaml
.code language-yaml "https://{default}/": type: upstream upstream: "mymagento:http" "https://{all}/": type: upstream upstream: "mymagento:http"
-
Para ambientes de Preparo e Produção, habilite a opção Forçar TLS no Fastly na interface do Administrador. Quando você usa essa opção, o Fastly lida com o redirecionamento para HTTPS, para que você não precise atualizar a configuração
routes.yaml
.
Opções de roteiro
Configure cada rota separadamente usando as seguintes propriedades:
type: upstream
upstream
que especifica o nome do aplicativo (conforme definido em .magento.app.yaml
) seguido pelo ponto de extremidade :http
.type: redirect
to
, que é um redirecionamento HTTP para outra rota identificada por seu modelo.cache:
redirects:
ssi:
Rotas simples
Nos exemplos a seguir, a configuração de rota roteia o domínio apex e o subdomínio www
para o aplicativo mymagento
. Essa rota não redireciona solicitações HTTPS.
Exemplo 1:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://www.{default}/":
type: redirect
to: "http://{default}/"
Neste exemplo, o roteamento de solicitações segue estas regras:
-
O servidor responde diretamente às solicitações com o seguinte padrão de URL:
code language-text http://example.com/path
-
O servidor emite um redirecionamento de 301 para solicitações com o seguinte padrão de URL:
code language-text http://www.example.com/mypath
Essas solicitações redirecionam para o domínio apex, por exemplo:
code language-text http://example.com/mypath
No exemplo a seguir, a configuração de rota não redireciona URLs do domínio www para o domínio apex. Em vez disso, as solicitações são atendidas nos domínios www e apex.
Exemplo 2:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://www.{default}/":
type: upstream
upstream: "mymagento:http"
Rotas curingas
O Adobe Commerce na infraestrutura em nuvem oferece suporte a rotas curingas, para que você possa mapear vários subdomínios para o mesmo aplicativo. Isso funciona para rotas de redirecionamento e upstream. Você coloca um asterisco (*) como prefixo na rota. Por exemplo, as seguintes rotas para o mesmo aplicativo:
*.example.com
www.example.com
blog.example.com
us.example.com
Isso funciona como um domínio abrangente em um ambiente ativo.
Roteamento de um domínio não mapeado
Você pode rotear para um sistema que não esteja mapeado para um domínio usando um ponto (.
) para separar o subdomínio.
Exemplo:
Um projeto com uma ramificação add-theme
é roteado para a seguinte URL:
http://add-theme-projectID.us.magento.com/
Se você definir o seguinte modelo de roteiro:
http://www.{default}/
A rota é resolvida para o seguinte URL:
http://www.add-theme-projectID.us.magento.com/
Você pode inserir qualquer subdomínio antes do ponto e da rota ser resolvida.
Exemplo:
Defina o seguinte modelo de roteiro:
http://*.{default}/
Esse modelo resolve ambos os URLs a seguir:
http://foo.add-theme-projectID.us.magentosite.cloud/
http://bar.add-theme-projectID.us.magentosite.cloud/
Você pode visualizar o padrão de rota para domínios não mapeados estabelecendo uma conexão SSH com o ambiente e usando a CLI magento-cloud
para listar as rotas:
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}/ |
+------------------------------------------+--------------------------------------------------------------+
Redirecionamentos e armazenamento em cache
Conforme discutido com mais detalhes em Redirecionamentos, você pode gerenciar regras de redirecionamento complexas, como redirecionamentos parciais, e especificar regras para o armazenamento em cache baseado em rota:
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