如何删除SilverStripe 4中其他vendormodules添加的路由?

时间:2018-10-09 14:53:43

标签: url-routing silverstripe silverstripe-4

我已经为SilverStripe 4安装了Blog模块,但不希望它具有所有不同的路由。

例如,我要删除“配置文件”,“存档”和“标签”路由。这些路由由模块的BlogController类定义。

如何确保将它们替换为HTTP 404响应?

1 个答案:

答案 0 :(得分:1)

your_module_folder/_config/config.yml内,如果您表示应After模块blog对其进行处理,并定义了应覆盖它们的那些路由:

---
name: your_module
After:
  - 'blog/*'
---
SilverStripe\Control\Director:
  rules:
    'profile/': 'MyCustomController'
    'archive/': 'MyCustomController'
    'tag/': 'MyCustomController'

请查看routing documentation

控制器只能执行一个引发404 http错误的操作。

use SilverStripe\Control\Director;
use SilverStripe\View\Requirements;

class MyCustomController extends Controller {

    private static $allowed_actions = ['index'];

    public function index(HTTPRequest $request) {
        return $this->httpError(404, "Not Found");
    }
}