2012-11-13 3 views
0

일부 요청 매개 변수가 올바르게 설정되지 않은 경우 리디렉션해야하는 코드가 있습니다.404 리디렉션과 함께 리디렉션

  if(!is_numeric($_GET['id'])){ 
         header("HTTP/1.0 404 Not Found"); 
        header('Location: '.$url); 
        exit(); 
       } 

문제는 Firefoxes 플러그인에서 라이브 HTTP 헤더를 확인할 때마다 임시 리디렉션이 발생한다는 것입니다. 그게 왜? 404 응답이 제공되지 않는 이유는 무엇입니까?

답변

2

문제는 Firefoxes 플러그인으로 확인할 때마다 라이브 HTTP 헤더가 생깁니다. 302 임시 리디렉션이 표시됩니다. 그게 왜? 왜 404 404 응답이 제공되지 않습니까?

여기에서 무엇을하고 싶은지 잘 모르겠 으면하지만 다음과 같은 것이 목적을 제공 할 것입니다. 내가 위치를 사용하는 경우

if (! is_numeric($_GET['id'])) { 
    header('Location: ' . $url, true, 404); 
    exit(); 
} 
+0

그것은 리디렉션을하지 못했습니다. 단지 404를 던졌습니다.이유는 –

+0

리디렉션 (상태 코드 302) 또는 찾지 못함 (상태 코드 404)은 가능하지만 둘 다 가질 수는 없습니다. –

+0

흠 .. 그래서 당신이 말하는 것은 내가 302 리디렉션을한다는 것입니다 .....하지만 난 그냥 리디렉션 할 수 있고 htaccess와 함께 404를 던져 수 있습니다 ..하지만 그게 작동하지 않을 것이라고 생각합니다 –

4

헤더를 404 상태 코드와 함께 보내면 이해가되지 않습니다.

Location

404

두 개의 문이 호환되지 않습니다 "나는 당신이 무엇을 요구하지 않는다"의미 "당신은 무엇을 요구하는 것은 이상 여기에있다"를 의미한다.

사람이 읽을 수있는 특정 설명을 보내려면 다른 종류의 문서와 마찬가지로 출력하십시오. 원할 경우 include() 수 있습니다. 리디렉션하지 마십시오.

+0

이 .. 나에게 302 상태 코드를 제공합니다 그래서 난 내가 사용 얼마나 include..thats를 사용할 수 있습니다 알고 (404)와 결합 할 필요가 ... 내가 원하는 상태를 생산하는 것입니다 암호. 그리고 동시에 URL을 바꿔보십시오. –

+0

@DmitryMakovetskiyd - 동시에 어떤 것이 발견되지 않고 어딘가에 있다는 것은 무엇입니까? – Quentin

+0

위치를 바꿀 때 .. 새 URL은 서버에서 가져 와서 htaccess를 거칩니다. htaccess에서 다른 리디렉션 302로 이동하여 대상 페이지로 이동합니다. htaccess가 참여하게되면 404 헤더를 처음으로 전달할 때 자신의 302 리디렉션으로 404 헤더 리디렉션을 무시합니다. 그래서 404 리디렉션 대신 302 리디렉션으로 끝납니다. –

0

위와 같이 시도한 헤더 중 하나만 보낼 수 있습니다.

404의 경우 - 웹 서버 구성에서 정의한대로 오류 관련 오류 페이지가 표시됩니다.

원하는 것을하기 위해서 ... 서버 404를 일반 html에서 PHP 페이지로 수정하고 거기에서 무엇을 표시해야하는지 (예 : 리퍼러를 기반으로 할 수 있음) 알아야합니다.

'동적'404 페이지에서 필요한 경우 리디렉션 할 수 있습니다.

+1

원하는만큼 많은 헤더를 보낼 수 있습니다. 위치 정보가 포함 된 404를 보내는 것은 의미가 없습니다. – Quentin

+0

죄송합니다 예 ... 그게 무슨 뜻인가요 :) – Brian

+0

흠 .. 그리고 아마 htaccess에 넣어 : ErrorDocument 404 /errormessages/404.php –

관련 문제