alpacadotsh/magento2-store-router

此软件包的最新版本(0.2.0)没有提供许可证信息。

Magento 2 店铺路由规则和定义。

安装次数: 3,423

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:magento2-module

0.2.0 2021-12-04 13:22 UTC

This package is not auto-updated.

Last update: 2024-09-22 02:53:34 UTC


README

此软件包允许您根据 HTTP 请求条件维护特定的规则。我们需要时可以随时向此模块添加额外的规则或条件。

配置 YAML 文件

配置文件位于项目的根目录,命名为 .store-router.app.yaml

示例配置文件

mywebsite:
  rules:
    mage_run_code: 'mywebsite'

mywebsite-prod:
  inherit: mywebsite
  conditions:
    hosts:
      '*.mywebsite.com': '*'

mywebsite-staging:
  inherit: mywebsite
  conditions:
    hosts:
      'staging.mywebsite.com': '*'
  rules:
    auth: 'user:pass'

配置组

在上面的示例配置文件中,组名为“mywebsite”、“mywebsite-prod”和“mywebsite-stagin”。每个组都有一个唯一的标识符。

继承另一个组的配置

可以继承另一个组的配置并在必要时合并或覆盖它。就像上面的示例一样,我们可以创建一个包含 mage_run_code 规则的组,并继承其他所有组的规则,以避免重复内容的维护。

配置组条件

目前,请求主机名将是唯一可能的条件类型。这总结了我们上面示例配置文件中 conditions 字段的内容。可以通过扩展 src/Config/ConditionCollection.php 来添加额外的条件。

配置条件:主机

使用 fnmatch() 函数匹配主机名,这意味着我们可以使用通配符。因此,为了将某个规则应用于 example.com 的每个子域名,我们可以在配置中使用 *.example.com,如上面的示例所示。

配置中每个主机的值应是要应用规则请求路径。请求路径可以是字符串或数组。以下是一个示例

# Multiple paths
'*.example.com':
    - 'nl-be'
    - 'de-de'
# Wildcard, meaning the rules 
# should apply to every request path
'*.example.uk': '*'

配置组规则

我们的规则定义在 YAML 配置文件中每个条件组的 rules 字段下。这些也可以继承。我们可以通过在 src/Config/RuleCollection.php 中的 ruleMapping 字段添加一个键来实现额外的规则,该键的值是负责的 RuleContract 类名。例如,参见 src/Rule/BasicAuth.php

配置规则:mage_run_code

我们可以定义 MAGE_RUN_CODE 属性以持久化特定的 Magento 店铺代码,并确保根据我们定义的 HTTP 条件始终加载特定的 Magento 店铺。这样我们就可以确保始终显示 example_uk 店铺,无论谁访问 //example.com/uk

配置规则:auth

根据 HTTP 条件,我们可以定义特定的 HTTP 基本认证凭据以阻止对公共资源的访问。这对于测试环境尤其重要。下面的示例展示了如何为 staging.example.com 定义 HTTP 基本认证凭据,同时保持生产环境 example.com 的公共访问。

'example':
    'conditions':
        'hosts':
            'example.com': '*'

'staging.example.com':
    'conditions':
        'hosts':
            'staging.example.com': '*'
    'rules':
        'auth': 'user:pass'
IP 地址白名单

可以添加 IP 地址范围以允许其无需认证即可访问。将白名单的 CIDR 范围添加到 app/etc/ip-whitelist/<group-id>,每行一个。注意,可以使用 # 注释和禁用白名单范围。

示例

127.0.0.1/24
8.8.8.8/16
# 8.8.4.4/16