配置路由
.magento/routes.yaml
目录中的routes.yaml
文件定义了Adobe Commerce在云基础架构集成、暂存和生产环境中的路由。 路由决定应用程序如何处理传入的HTTP和HTTPS请求。
默认routes.yaml
文件指定用于处理HTTP请求的路由模板为HTTPS,这些模板位于具有单个默认域的项目以及为多个域配置的项目中:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://{all}/":
type: upstream
upstream: "mymagento:http"
使用magento-cloud
CLI查看已配置路由的列表:
magento-cloud environment:routes
+-------------------+----------+---------------+
| Route | Type | To |
+-------------------+----------+---------------+
| http://{default}/ | upstream | mymagento |
+-------------------+----------+---------------+
Pro环境的配置更新
routes.yaml
文件中的路由配置和.magento.app.yaml
文件中的cron配置。 Adobe建议在集成环境中更新和测试YAML配置文件,然后将更改部署到暂存环境。 如果重新部署后更改未应用于暂存站点,并且日志中没有相关错误消息,则您 必须 提交描述尝试的配置更改的Adobe Commerce支持票证。 在票证中包含任何更新的YAML配置文件。路由模板
routes.yaml
文件是模板化路由及其配置的列表。 您可以在路由模板中使用以下占位符:
-
{default}
占位符表示配置为项目默认值的限定域名。例如,具有默认域
example.com
的项目和以下路由模板:code language-text https://www.{default}/ https://{default}/blog
这些模板将解析为生产环境中的以下URL:
code language-text https://www.example.com/ https://example.com/blog
-
{all}
占位符表示为项目配置的所有域名。例如,具有
example.com
和example1.com
个域的项目具有以下路由模板:code language-text https://www.{all}/ https://{all}/blog
对于项目中的所有域,这些模板解析为以下路由:
code language-text https://www.example.com/ https://www.example1.com/ https://example.com/blog https://example1.com/blog
{all}
占位符对于为多个域配置的项目非常有用。 在非生产分支中,{all}
被替换为每个域的项目ID和环境ID。如果项目未配置任何域(这在开发过程中很常见),
{all}
占位符的行为与{default}
占位符相同。
Adobe Commerce还为每个活动的集成环境生成路由。 对于集成环境,{default}
占位符将替换为以下域名:
[branch]-[per-environment-random-string]-[project-id].[region].magentosite.cloud
例如,在us
群集中托管的mswy7hzcuhcjw
项目的refactorcss
分支具有以下域:
https://refactorcss-oy3m2pq-mswy7hzcuhcjw.us.magentosite.cloud/
尾随斜杠
路由定义包含指示文件夹或目录的尾随斜杠;但是,可以使用或不使用尾随斜杠提供相同的内容。 以下URL解析相同,但可以解释为 两个不同的 URL:
https://www.example.com/blog/
https://www.example.com/blog
路由协议
所有环境都自动支持HTTP和HTTPS。
-
如果配置仅指定HTTP路由,则会自动创建HTTPS路由,从而允许从HTTP和HTTPS为站点提供服务,而无需重定向。
例如,具有默认域
example.com
的项目和以下路由模板:code language-text http://{default}/
此模板解析为以下URL:
code language-text http://example.com/ https://example.com/
-
如果配置仅指定HTTPS路由,则所有HTTP请求都将重定向到HTTPS。
例如,默认域为
example.com
的项目具有以下路由模板:code language-text https://{default}/
此模板解析为以下URL:
code language-text https://example.com/
它还会处理以下重定向:
http://example.com/
==>https://example.com/
通过TLS提供所有页面。 对于此配置,必须使用以下方法之一将所有未加密的请求重定向到等效的TLS:
-
在
routes.yaml
文件中将协议更改为HTTPS。code language-yaml "https://{default}/": type: upstream upstream: "mymagento:http" "https://{all}/": type: upstream upstream: "mymagento:http"
-
对于暂存和生产环境,请从管理UI中启用强制Fastly上的TLS选项。 使用此选项时,Fastly处理到HTTPS的重新定向,因此您不必更新
routes.yaml
配置。
路由选项
使用以下属性分别配置每个路由:
type: upstream
upstream
属性,该属性指定应用程序名称(如.magento.app.yaml
中所定义)并后跟:http
终结点。type: redirect
to
属性,该属性是对由其模板标识的另一路由的HTTP重定向。cache:
redirects:
ssi:
简单路由
在以下示例中,路由配置将Apex域和www
子域路由到mymagento
应用程序。 此路由不会重定向HTTPS请求。
示例1:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://www.{default}/":
type: redirect
to: "http://{default}/"
在本例中,请求路由遵循以下规则:
-
服务器使用以下URL模式直接响应请求:
code language-text http://example.com/path
-
服务器为具有以下URL模式的请求发出 301重定向:
code language-text http://www.example.com/mypath
这些请求将重定向到apex域,例如:
code language-text http://example.com/mypath
在以下示例中,路由配置不会将URL从www域重定向到apex域。 相反,会同时从www和apex域提供请求。
示例2:
"http://{default}/":
type: upstream
upstream: "mymagento:http"
"http://www.{default}/":
type: upstream
upstream: "mymagento:http"
通配符路由
云基础架构上的Adobe Commerce支持通配符路由,因此您可以将多个子域映射到同一个应用程序。 这适用于重定向和上游路由。 您用星号(*)为路由添加前缀。 例如,以下路由到同一个应用程序:
*.example.com
www.example.com
blog.example.com
us.example.com
这可用作实时环境中的捕获所有域。
路由未映射的域
您可以使用点(.
)来分隔子域,从而路由到未映射到域的系统。
示例:
具有add-theme
分支的项目路由到以下URL:
http://add-theme-projectID.us.magento.com/
如果定义以下路由模板:
http://www.{default}/
路由解析到以下URL:
http://www.add-theme-projectID.us.magento.com/
您可以在点和路由解析之前插入任何子域。
示例:
定义以下工艺路线模板:
http://*.{default}/
此模板解析以下两个URL:
http://foo.add-theme-projectID.us.magentosite.cloud/
http://bar.add-theme-projectID.us.magentosite.cloud/
您可以查看未映射域的路由模式,方法是建立到环境的SSH连接,并使用magento-cloud
CLI列出路由:
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}/ |
+------------------------------------------+--------------------------------------------------------------+
重定向和缓存
如重定向中详细讨论的,您可以管理复杂的重定向规则,如 部分重定向,并为基于路由的缓存指定规则:
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