2017-03-09 9 views
0

사용자가 로그인하지 않았거나 다른 상태 (장바구니가 체크 아웃보기에 비어 있지 않은 경우) 인 경우 다른 장소로 리디렉션 할 수있는 방법이 있지만 필자는이 방법을 작성했습니다. Chrome에서 내 리디렉션을 캐시합니다.크롬이 헤더 리디렉션을 캐싱하지 못하도록하십시오.

예 : 사용자가 장바구니가 비어있어 체크 아웃하려고 시도하고 다음 번에 장바구니가 가득차더라도 다시 리디렉션됩니다. Chrome의 설정으로 직접 이동하여 캐시 및 인터넷 사용 기록을 삭제 한 후에 만 ​​해결됩니다.

내 방법 : 메서드를 호출

public static function redirect($url, $statusCode = 302, $cacheHeader = true) 
{ 
    if($cacheHeader === false) { 
     header("Cache-Control: no-cache, must-revalidate"); 
    } 

    header('Location: ' . $url, true, $statusCode); 
    exit(); 
} 

는 :

EkerbaseUtilities::redirect(Ekerbase::getRoot() . '#showcart', 307, false); 

나는 모두 같은 결과를 가지고, 307, 303 및 기타 상태로 시도했습니다. 또한 Iv'e가 no-cache 헤더를 설정하려했음을 알 수 있습니다.

다른 시도는 URL에? unique() = 1을 설정하는 것으로, 항상 변경되지만 동일한 결과를 얻은 매개 변수입니다.

JS 리다이렉트는 UX가 그 사이트의 열쇠이기 때문에 의문의 여지가 있습니다.

단서가 있습니까?

Header set Cache-Control max-age=0 

완전히 문제를 해결 : 감사합니다,

+0

_ "내가 시도한 다른 방법은 URL에 unique() = 1을 설정하는 것입니다. 항상 변경되는 매개 변수는 있지만 여전히 동일한 결과를 얻습니다."_ - 캐시 된 리디렉션을 얻는 것은 다소 불가능합니다. 브라우저가 이전에 요청하지 않은 URL ... 리디렉션 전에 어떤 URL을 사용자가 직접 보냈습니까? – CBroe

+0

_ "사용자가 결제에 도달하려고 시도하고 장바구니가 비어있어 리디렉션 된 경우"_ - 왜 처음에 그렇게합니까? 그들이 체크 아웃 페이지로 가서 카트가 비어 있기 때문에 체크 아웃 할 것이 없다는 메시지를 선물하십시오. 그들이해야 할 일/할 수있는 일에 대해 더 자세히 안내하고 싶다면 "쇼핑 계속"과 같은 추가 링크를 제공하십시오 ... – CBroe

답변

0

문제는 나의 htaccess로와 있었다, 방금 설정했다.