Чтобы всегда добавлять добавляемый /, вы можете создать декоратор для улучшения маршрута и поместить его в свой пакет сайта.
Создайте файл в пакете вашего сайта под Classes/Routing/Enhancer/ForceAppendingSlashDecorator.php
с содержанием:
<?php
declare(strict_types=1);
namespace MyVendor\SitePackage\Routing\Enhancer;
use TYPO3\CMS\Core\Routing\Enhancer\AbstractEnhancer;
use TYPO3\CMS\Core\Routing\Enhancer\DecoratingEnhancerInterface;
use TYPO3\CMS\Core\Routing\RouteCollection;
class ForceAppendingSlashDecorator extends AbstractEnhancer implements DecoratingEnhancerInterface
{
/**
* {@inheritdoc}
*/
public function getRoutePathRedecorationPattern(): string
{
return '\/$';
}
/**
* {@inheritdoc}
*/
public function decorateForMatching(RouteCollection $collection, string $routePath): void
{
foreach ($collection->all() as $route) {
$route->setOption('_decoratedRoutePath', '/' . trim($routePath, '/'));
}
}
/**
* {@inheritdoc}
*/
public function decorateForGeneration(RouteCollection $collection, array $parameters): void
{
foreach ($collection->all() as $routeName => $existingRoute) {
$existingRoutePath = rtrim($existingRoute->getPath(), '/');
$existingRoute->setPath($existingRoutePath . '/');
}
}
}
Пожалуйста, замените правильное пространство имен, соответствующее вашему сайту.
Чтобы зарегистрировать свой усилитель маршрута, добавьте строку к вашему ext_localconf.php
:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['enhancers']['ForceAppendingSlash'] = \MyVendor\SitePackage\Routing\Enhancer\ForceAppendingSlashDecorator::class;
В качестве последнего шага добавьте следующий код в файл yaml конфигурации вашего сайта:
routeEnhancers:
PageTypeSuffix:
type: ForceAppendingSlash
После этих настроек TYPO3 всегда будет добавлять добавление / к вашим URL, чтобы новые URL соответствовали старым, созданным realurl.