【问题标题】:Silverstripe 3: Can I set a custom error page in silverstripe for certain page types?Silverstripe 3:我可以在 silverstripe 中为某些页面类型设置自定义错误页面吗?
【发布时间】:2019-04-09 22:39:11
【问题描述】:

我想知道是否可以在 silverstripe 上为特定页面类型设置自定义 404 页面,而所有其他 404 错误都使用默认页面。

我有一个特定的页面类型“事件”,其中包含在特定日期之后未发布的事件页面。

我还有一个静态页面,其中包含一些活动的链接。此页面 url 被发送给成员,因此即使在某些事件可能已经过去之后,他们仍然可以访问该页面。

一旦事件通过,它就会被取消发布,因此点击链接将导致 404 错误页面。该链接在静态页面上仍然可用。

我想为事件页面类型设置一个特定的错误页面,这样当有人点击过去事件的链接时,他们会得到错误页面 A。“此事件已通过,转到我们的事件页面”

然后我想要一个常规错误页面 B“找不到页面,转到我们的主页”,这将是网站上任何其他不正确链接的错误页面。

有什么办法可以做到吗?我正在使用 silverstripe 3

【问题讨论】:

    标签: php redirect error-handling silverstripe


    【解决方案1】:

    遇到此问题的任何人的解决方案:

    config.yml

    RequestHandler:
      extensions:
        - ExpiredEventRedirectExtension
    
    ContentController:
      extensions:
        - ExpiredEventRedirectExtension
    
    ModelAsController:
      extensions:
        - ExpiredEventRedirectExtension
    

    ExpiredEventRedirectExtension.php

    public function onBeforeHTTPError404($request)
    {
        $urlSegment = $request->param('URLSegment');
    
        if ($urlSegment == "events") {
            $response = new SS_HTTPResponse();
            $response->redirect("/event-no-longer-available/");
        } 
    
        throw new SS_HTTPResponse_Exception($response);
    }
    

    如果事件已列在“事件”EventHolder 页面类型下方,则这会将用户重定向到页面类型“页面”的事件不再可用。如果它不是来自此 URL,则会显示常规 404 错误页面

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      相关资源
      最近更新 更多