SILVERSTRIPE 3.1: контроллер по умолчанию / маршрут
-
21-12-2019 - |
Вопрос
Я хотел бы добавить маршрут по умолчанию в SilverStripe. В настоящее время в моем приложении есть несколько маршрутов, являются / dev, / admin и / API. Я хотел бы, чтобы все остальные трафики, которые не в (виртуальном) подкаталоге, который будет обрабатываться отдельным контроллером.
Я играю с системой конфигурации YAML, но я не могу обернуть голову вокруг него.
Так что в основном я хочу сделать следующее
- .
- / dev -> Основные функции SS, должны делать то, что он делает: -)
- / admin -> модуль CMS
- / API -> Модуль восстановления API,
Но каждый другой путь должен указывать на MyownController.
- .
- / asdfsdfsd -> myowncontroller
- / 23-asdf -> myowncontroller и т. др.
Не нужно, чтобы / asda / asd также перенаправляют в myowncontroller.
Я сделал файл /mysite/_config/routes.yml, содержащий следующее:
---
Name: myroutes
After: 'framework/routes#coreroutes'
---
Director:
rules:
'$Path': 'MyOwnController'
.
Это ломает сайт (только 404). Как это должно быть настроено? Я мог бы начать возобновить в _config.php, но я бы предпочел придерживаться стандарта :-)
Решение
Как насчет этого через .htaccess?Что-то вроде следующее (не проверено):
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{REQUEST_URI} !^/dev/
RewriteCond %{REQUEST_URI} !^/api/
RewriteCond %{REQUEST_URI} !^/your/default/route
RewriteCond %{REQUEST_URI} !^/framework
RewriteCond %{REQUEST_URI} !^/assets
RewriteCond %{REQUEST_URI} !^/Security
RewriteCond %{REQUEST_URI} !^/themes
RewriteCond %{REQUEST_URI} !^/cms
RewriteRule (.*) http://www.yourdomain.com/your/default/route/$1 [L]
. Другие советы
Я адаптировал это из маршрутов CMS Modelscontroller и должен работать, но не содержится.
---
Name: myroutes
Before: '*'
After: '#rootroutes'
---
Director:
rules:
'$Path//$Action/$ID/$OtherID': 'MyOwnController'
.
https://github.com/silverstripe/silverstripe-CMS / BLOB / 3.1 / _CONFIG% 2FROUTES.YML
Не забудьте вспомогать= 1.