ErrorPage 및 ErrorPage_Controller를 확장하는 "지능적인 오류 페이지"클래스가 있습니다. 기본적으로 다음과 같습니다. a) 404인지 확인한 다음 b) 일부 맞춤 검색 로직을 기반으로 잠재 리디렉션 페이지. 페이지가 다른 곳에 있으면 해당 위치로 사용자가 자동으로 재 지정됩니다. SilverStripe에는 이미 이름이 바뀌거나 이동 된 SiteTree 요소를 기반으로하는이 기본 버전이 있지만이 기능은 고급 버전입니다.SilverStripe 3.1의 확장 된 ErrorPage [_Controller]에서 404 헤더를 오버라이드합니다.
어쨌든, 3.1 이후에는 404 헤더를 무시하는 것이 불가능 해 보입니다 (3.0에서는 문제가 없었지만). 3.1으로
class IntelligentErrorPage_Controller extends ErrorPage_Controller {
public function init() {
parent::init();
$errorcode = $this->failover->ErrorCode ? $this->failover->ErrorCode : 404;
if ($errorcode == 404) {
... some search logic ...
if ($RedirectSiteTreePage)
return $this->redirect($RedirectSiteTreePage->Link());
}
}
}
위의 반환 모두 "HTTP/1.1 404 찾을 수 없음"뿐만 아니라은 "위치 : [URL]을"헤더 - 그러나 404 개 상태를 무시하는 것은 불가능 것입니다.
"HTTP/1.1 302 Found"헤더를 어떻게 복원 할 수 있는지 알고 싶습니다.
추신 : 나는 행운과 함께 $ this-> getResponse() -> setStatusCode (302) 등을 시도했다.
학습 뭔가 매일. +1 – schellmax
감사합니다 - 완벽하게 일했습니다! – Axllent
301 리디렉션하는 방법 : $ response-> getResponse() -> redirect ('contact-us', 301); –