/** * On every URL that generates a 404, we'll capture it here and see if we can * find an old URL that it should be redirecting to. * * @param SS_HTTPResponse $request The request object * @throws SS_HTTPResponse_Exception */ public function onBeforeHTTPError404($request) { // We need to get the URL ourselves because $request->allParams() only has a max of 4 params $params = preg_split('|/+|', $request->getURL()); $getvars = $request->getVars(); unset($getvars['url']); $page = self::find_old_page($params); if ($page) { $res = new SS_HTTPResponse(); $res->redirect(Controller::join_links($page, $getvars ? '?' . http_build_query($getvars) : null), 301); throw new SS_HTTPResponse_Exception($res); } }
/** * On every URL that generates a 404, we'll capture it here and see if we can * find an old URL that it should be redirecting to. * * @param SS_HTTPResponse $request The request object * @throws SS_HTTPResponse_Exception */ public function onBeforeHTTPError404($request) { // Build up the request parameters $params = array_filter(array_values($request->allParams()), function ($v) { return $v !== NULL; }); $getvars = $request->getVars(); unset($getvars['url']); $page = self::find_old_page($params); if ($page) { $res = new SS_HTTPResponse(); $res->redirect(Controller::join_links($page, $getvars ? '?' . http_build_query($getvars) : null), 301); throw new SS_HTTPResponse_Exception($res); } }