Silverstripe 3.1:默认控制器/路由

时间:2014-07-29 14:39:00

标签: url-routing yaml silverstripe

我想添加一条到Silverstripe的默认路线。目前,我的应用程序中有一些路由,即/ dev,/ admin和/ api。我希望所有其他不在(虚拟)子目录中的流量由单独的控制器处理。

我一直在玩YAML配置系统,但我似乎无法绕过它。

基本上我想做以下

  • / dev - >基本的SS功能,应该做它的作用: - )
  • / admin - > cms模块
  • / api - > Restful 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' s)。应如何设置?我可以开始摆弄_config.php,但我宁愿遵守标准:-)

2 个答案:

答案 0 :(得分:1)

通过.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]

答案 1 :(得分:0)

我已经从CMS ModelAsController路线调整了这个并且应该可以使用,但是未经测试。

---
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。