alpacadotsh / magento2-store-router
Magento 2 店铺路由规则和定义。
Requires
- symfony/http-foundation: ^5.3
- symfony/yaml: ^5.3
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