2010-02-25 2 views
4

문제가 생겼습니다 :/404 페이지 헤더 여야하지만/err404 페이지의 200OK 헤더 상태 문제. 200 OK를 가지고 무엇이 잘못 되었나요? 200 OK는 404 오류 페이지 헤더 상태에 있어야합니다.404 오류 페이지에서 200 OK 헤더 상태를 갖는 것이 왜 나쁜가요?

감사합니다. 고마워요!


나는 .htaccess와 관련이 있다고 생각합니다. 여기에 내 .htaccess 파일입니다. URL이 (URL을 존재하지) http://localhost/fdfcdcvdvdvbdf.html 같은 때, 그것은 홈페이지로 리디렉션하지만 리디렉션한다

ErrorDocument 404 /err404.html 

RewriteEngine On 

RewriteRule ^login.html$ index.php?s=login&a=loginDo [QSA,L] 
RewriteRule ^logout.html$ index.php?s=login&a=logoutDo [QSA,L] 
RewriteRule ^([^/]*).html$ index.php?s=$1 [QSA,L] 
RewriteRule ^members/([^/]*)$ index.php?s=profile&username=$1 [QSA,L] 
RewriteRule ^([^/]*)/$ index.php?s=listing&search[cityString]=$1 [QSA,L] 
RewriteRule ^([^/]*)/([^/]*)/$ index.php?s=listing&search[neighborhoodString]=$2 [QSA,L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*).html$ index.php?s=details&seo_friendly=$3 [QSA,L] 

나는이 htaccess로 파일 :(

질문 1에 관련된 좀 더 문제가 .? err404.html하는 문제에 대해 어떤 생각을 err404 리디렉션 http://localhost/fdfcdcvdvdvbdf.ht 또는 http://localhost/fdfcdcvdvdv

질문 2와 같은 URL의 경우에서 잘 작동합니다 어떻게이 200 OK 문제를 해결할 수 있습니다 :/

+4

200 상태의 404 오류 페이지를 만들 수 있습니까? 페이지에는 하나의 상태 코드 만있을 수 있습니다. –

+3

@jeff : 404를 내부적으로 catch 한 다음 오류를 설명하는 페이지를 반환하지만이 페이지에는 200 개의 코드가 첨부되어 있습니다. –

답변

6

누락 된 페이지에 대해 200 OK 상태를 반환하면 사용자가 혼란스러운 브라우저 (예 : 사용자 정의 오류 HTML이없는 경우 오류 메시지를 표시하지 않음) 및 검색 엔진 (예제와 같이 누군가가 알려주는 색인 생성을 시작합니다. COM/...)이-웹 사이트는 - 끔찍한 - 사용 - 우리의 경쟁자입니다


의 mod_rewrite에 대해 편집에 관한 :
http://example.com/lsdjkldsjlk.html이 세 번째 RewriteRule과 일치하는, 그래서 인덱스로 리디렉션됩니다. php.

index.php 스크립트는 s 매개 변수와 관련된 내용이 없음을 감지하고 header()으로 전화하여 404 상태를 반환합니다.

+0

예 @christopher 나는 세 번째 줄에 대해 같은 것을 알았지 만, 나는 그것을 정렬하는 방법을 찾지 못했습니다 :/나는 아무 것도없는 기존의 페이지 리디렉션을 정의하는 예외적 인 경우를 찾기 위해 인터넷 검색을 계속합니다. –

+0

흠? index.php 스크립트에서's' 매개 변수에 기반한 일종의 컨텐츠 룩업을해야합니다. 콘텐츠 ID가 유효하지 않은 경우 'error.php'로 리디렉션합니다. 이 스크립트에서 PHP의'header()'메소드를 사용하여 404 상태를 리턴 한 다음 원하는 오류 페이지 컨텐츠를 출력하십시오. –

+0

예, 레코드 용으로 만들었습니다. ID 컨트롤을 넣고 오류 페이지로 리디렉션합니다. 하지만 연락처, 집, 약자 등의 페이지에는이 기능을 사용할 수 없습니다.이 ID는 없습니다. 그래서 blabla.com/sdfsfdsg를 작성하면 홈페이지로 리다이렉트합니다. id가있는 페이지를 제어 할 수 없습니다 :/존재하지 않는 파일을 제어하는 ​​트릭이 있습니까? 나는 너무 많이 봤지만 아무것도 찾을 수 없었다. –

2

HTTP의 의미는 매우 명확합니다. 요청한 페이지가 서버에서 발견되지 않으면 404을 보내야합니다. 또한

, 당신이 당신의 위치가/쓰레기 (찾을 수 없음 페이지가있는 경우)과 색인 포복 가진 괜찮다면 ...

20

404 값이 단지 크리스마스 트리 장식 아니다 - 그것은 실제 전달 문제의 URL에 대한 정보, 즉 그것이 존재하지 않는다는 것입니다. 이라고 설명하는 200 페이지를 보내는 것은 페이지가 존재하지 않는다는 것, 특히 프로그램과는 달리 인간과는 완전히 다른 것입니다.

+4

+1 * 검색 엔진을 언급하지 않았습니다. 모든 사람들이 처음부터 검색 엔진을 만족시키고 싶어하는 것 같습니다. – Gumbo

+0

* "내 고객이 내가 판매하는 코드를 수정하도록 요청하고 있지만 이유가 보이지 않습니다"*라고 말하면서 검색 엔진을 언급하면 ​​표준 준수보다 더 좋아질 것입니다. 게으름을 피우면서 시간을 절약하지 못하고 사업을 잃어 버리고 있다는 사실을 사람들에게 상기시켜야합니다. –

+0

givin time @ josh에 감사드립니다. 그러나 여기 시간을 절약하려하지 않습니다. 메신저 그냥 문제가 sth에서 배울려고, 나는이 코멘트를 읽고 여기에서 얻을 새로운 정보로 인터넷 검색을 계속. 나는 실수로부터 일을하는 좋은 방법을 배우려고 노력하며 누군가로부터 준비된 코드를 찾지 않습니다. 감사. –

3

검색 엔진이 404 페이지의 색인을 생성하지 않게하는 것이 좋습니다.

2

200 상태를 반환하는 경우 404 오류 페이지가 아닙니다. 페이지를 사용할 수없는 경우 (캐시, 프록시, 스크립트) 이 실패한 경우이 실패하지 않고 혼란이 발생합니다. 또한 Google will hate you (스팸 사이트는 모든 검색어에 대해 200 페이지를 반환하기 때문에) 404 오류를 반환하십시오.

1

그런데 "404 오류 페이지"의 404 위치는 어디인지 알 수 있습니까? 정확히 HTTP 오류 코드입니다.

소프트웨어는 올바른 페이지와 잘못된 페이지를 구분할 수 있어야합니다. "404"가 표시된 페이지를 이미지로 보내면 어떤 소프트웨어도 잘못된 것을 인식하지 못합니다.

1

접근성 문제입니다. 200 OK는 발송 된 자원이 요청 된 자원임을 의미합니다. 404는 요청한 리소스를 찾을 수 없으며 보내진 리소스가 오류 페이지임을 나타냅니다. 브라우저는 보낸 상태 코드를 사용하여 모든 것이 정상인지 확인합니다. 표시된 페이지에서 사람과의 차이를 느끼지 못할 수도 있지만 크롤러는 이러한 사실을 알아야합니다 (또는 오류 등의 색인을 생성합니다).

관련 문제