2009-10-04 8 views
0

레일즈가 적용된 애자일 웹 개발 (Agile Web development)에서 누군가가 웹 사이트의 일부 데이터에 액세스하려고 시도했지만 더 이상 레코드가 존재하지 않으면 사용자가 작업 페이지로 리디렉션되고 메시지를 표시해야한다고 제안합니다.레코드에서 리디렉션을 찾을 수 없습니까?

사용자는/book/1로 이동하지만 더 이상 id가 1 인 책이 존재하지 않으므로/books로 리디렉션되고 "그 책은 존재하지 않습니다"라는 메시지가 표시됩니다. 좋은 사용자 경험이지만 HTTP 프로토콜을 깨는 것 같습니다. 임시 리디렉션이어야합니까? 그렇다면 웹 크롤러는 계속 해당 페이지를 때릴 것입니다. 영구적 인 리디렉션이어야합니까? 그렇다면 이전 콘텐츠를 사용할 수 있어야하며 그렇지 않습니다.

레코드를 찾을 수없는 페이지가 404를 발행해야한다고 생각합니다. 틀렸습니까? hitting/book/1이 1이 더 이상 존재하지 않는다면/books와 정확히 똑같은 것을 보여주는 HTML과 404를 반환 할 것이고 아마도 에러 메시지 일 것입니다.

레일스를 이용한 민첩한 웹 개발은/책에서 볼 수있는 것을보기 위해서만 사용자가/book/1 생성 404를 계속 사용할 수 있기 때문에 해당 옵션에 위배됩니다.

당신은 어떻게 생각하십니까?

답변

1

리소스가없는 경우 404 상태 코드를 보내십시오. 정말 간단합니다. 리디렉션이란 URL 만 (일시적으로) 유효하지 않지만 리소스가 존재 함을 의미합니다.

0

404가 없으면 검색 엔진은 개체가 삭제되었음을 발견 할 수 없습니다. 그래서 나는 그것이 필요하다고 생각합니다.

+0

네, 저의 입장입니다.이 책은 다른 것을 추천합니다. – Pablo

0

사용자가/책이나/무엇을 계속할지 묻는 404 템플릿 (404 상태 코드로 완료)을 렌더링 할 때 좋은 절충안이 있다고 생각합니다.

0

레코드가 인 경우 더 이상이 아닌 경우 301 상태 코드 "영구 리디렉션"을 사용해야합니다. 301과 404의 차이점은 리소스가 존재하지만 이동했을 때 이 존재하지 않는 경우 및 301 인 경우 404 오류 코드를 사용해야한다는 것입니다.

+0

글쎄, 만약 누군가가 ID 1234의 주석을 읽으 려하고 데이터베이스에 없다면, 나는 그것이 존재했는지 여부를 알 수 없다. 그리고 댓글 목록으로 리다이렉트하면 리소스가 지금 존재하기 때문에 아니다. 내가 제공 할 수있는 최선이었습니다. – Pablo

+0

글쎄, 당신의 경우에는 신경 쓰지 않을 수도 있지만,이 메소드가 API에서 사용되는 경우, 헤더는 실제로 호출 측에 무슨 일이 일어 났는지에 대한 좋은 설명을 제공 할 수 있습니다. –

관련 문제