Это не поддерживается, вам придется либо задать несколько маршрутов соответственно, что вы можете просто сделать в oop, когда вы вводите список своих хостов:
foreach (['images.example.com','images.example2.com','images.example3.com'] as $host) {
$routes
->connect(
'/images',
['controller' => 'Images', 'action' => 'index']
)
->setHost($host);
}
или создать свой собственный Класс маршрута, который принимает либо несколько хостов, либо, возможно, фактические регулярные выражения. Последнее, вероятно, было бы проще, поскольку не требовало бы переопределения большого количества материала для сопоставления, например:
src / Routing / Route / RegexHostRoute. php
namespace App\Routing\Route;
use Cake\Routing\Route\DashedRoute;
class RegexHostRoute extends DashedRoute
{
public function match(array $url, array $context = []): ?string
{
// avoids trying to match the _host option against itself in parent::match()
if (!isset($url['_host'])) {
return null;
}
return parent::match($url, $context);
}
public function hostMatches(string $host): bool
{
return preg_match('^@' . $this->options['_host'] . '@$', $host) === 1;
}
}
Это должно позволить установить хост как images\.example[2-3]?\.com
:
$routes
->connect(
'/images',
['controller' => 'Images', 'action' => 'index'],
['routeClass' => \App\Routing\Route\RegexHostRoute::class]
)
->setHost('images\.example[2-3]?\.com');
См. Также