2010-06-02 2 views
0

그래서 저는 PHP 링크 단축키를 사용하고 있습니다. (저는 세상에 필요한 것입니다.) 갈 필요가 있고과 같이, 브라우저를 리디렉션 301 헤더를 보내는 경우 페이지가로드, PHP는 지금 ...301 리디렉션 전에 데이터 처리?

을 결정 기본적으로 할 때, 나는 나의 리디렉션 및 삽입에 약간의 추적을 추가하기 위해 노력하고있어 일부 사용자 지정 분석 데이터가 리디렉션이 발생하기 전에 MySQL 테이블에 저장됩니다. 내가 리디렉션 유형을 지정 그냥 사용하지 않는 경우가 완벽하게 작동합니다 : 물론 즉시이 301 헤더에 추가로,

header("Location: http://newsite.com"; 

을하지만, 다른 아무것도 처리되지됩니다. 사실, 첫 번째 요청에서, 그것은 MySQL로 데이터를 전송하지만, 이후의 요청에는 데이터베이스와의 통신이 없습니다.

나는 브라우저 캐싱 문제라고 생각합니다. 301 번 요청이 나오면 이후 요청에서 구문 분석 할 이유가 없다고 판단됩니다. 하지만이 문제를 해결할 방법이 있는지 아는 사람이 있습니까?

나는 그것을 SEO 목적을 위해 301로 유지하고 싶습니다. (기본값으로 404를 지정하지 않으면 믿을 수 있습니까?)

.htaccess를 사용하여 MySQL 작업을 수행 할 페이지 앞에 파일을 추가하는 방법을 생각했지만 301을 사용하면 무시되지 않을까요?

어쨌든 다른 유형의 리디렉션을 사용하는 것 외에 다른 해결책이 있는지 확실하지 않지만 아직 포기할 준비가되었습니다. 그래서, 모든 제안을 많이 주시면 감사하겠습니다. 감사!

답변

2

첫 번째 헤더 명령문 앞에 다음을 추가하십시오. 이것은 전형적인 페이지에서 캐싱을 방지해야하지만 리디렉션 작동 있는지 확실하지 않습니다 : 설명은 301 코드의 설명에

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Thu, 1 Jan 1970 00:00:00 GMT"); 
+0

RFC 2616은 "이 응답은 달리 지정하지 않는 한 캐시 할 수 있습니다."라고 말하면 아마도 작동 할 것입니다. – Artefacto

+0

완벽하게 작동합니다. – Jesse

0

: "영구적으로을 이전"당신은 구체적으로 말하는 것 브라우저를 사용하면 새 페이지가 영구적 인 새 위치이므로 이전 URL을 다시 방문 할 이유가 없습니다.

대신 303을 사용하십시오. 기타 상태를 참조하십시오. 이것은 대략 다른 방문자를 다른 곳으로 리디렉션한다는 점에서 거의 동일한 의미를 갖지만 캐시해서는 안됩니다.

0

임시 리다이렉션이며 캐시되지 않는 기본 302 리디렉션을 사용해야합니다.

301은 영구적 인 리디렉션이며 대부분의 브라우저가이를 캐시합니다.