2009-11-24 4 views
1

어떻게하면 아래 링크를 404 오류 페이지로 리디렉션 할 수 있습니까?htaccess 404 오류 리디렉션 /cat/sub/.html like URL

http://www.blabla.com/category/sub/.html

나는, 일반적으로 제품을 서구 친화적 인 링크를 blabla.com/category/sub/product.html

페이지 나던 같은 URL이 오류를 제공하고있다 생성합니다. 그냥 빈 콘텐츠를 표시합니다. 나는 CATEGORY NAME 헤더와 같은 정적 텍스트를 볼 수 있지만 URL 옆에 동적 categoryname이 없기 때문에 URL이 잘못되어 db에서 레코드를 얻을 수 없다는 것을 의미합니다. 페이지에 동적 내용이 표시되지 않지만 정적 내용 표시

감사합니다! 감사

답변

1

, 당신은 (404)의 헤더를 설정할 수 있습니다 될 수 있습니다 - 발견 예를 들어 404 페이지

로 리디렉션하지 :

<?php  

    //$rows is the num_rows of the query 
    if ($rows > 0) {  
     //your code here  
    } else {  
     header("HTTP/1.1 404 Not Found"); 
     header("Location: 404.html"); 
     exit(); 
    } 

?> 
+0

안녕하세요, 내 문제를 해결 :)하지만 거기에 htaccess 또는 sth 통해 ... php 컨트롤보다 더 효율적으로 있어야한다고 생각했습니다. –

+0

나는 반환 된 id 값 컨트롤 :) 당신이 제안한 것과 같은 방법입니다. 다시 한 번 감사드립니다. –

+0

404를 보내지 말고 같은 시간에 리디렉션하십시오! 리디렉션은 대신 302를 발생시킵니다. – Gumbo

0

당신은 오류를 잡기 위해 htaccess로 사용해야합니다

ErrorDocument 400 /errors/400.html 
ErrorDocument 401 /errors/401.html 
ErrorDocument 403 /errors/403.html 
ErrorDocument 404 /errors/404.html 
ErrorDocument 500 /errors/500.html 

아파치는 발생 어떤 오류에 따라 이러한 페이지 중 하나를로드 할 필요가 있음을 이제 알게 될 것이다. 대신에 동적 솔루션을위한 PHP 스크립트 (예 : 404.php)를 사용할 수 있습니다.

즉, http://www.blabla.com/category/sub/.html은 오류 메시지를 표시하고 서버는 오류 헤더 (이 경우 404)를 생성하므로 검색 엔진이 크롤링하지 않습니다.

http 루트 디렉토리에 .htaccess이라는 파일을 만들고 내부에 코드를 삽입하여이 코드를 사용합니다. .htaccess은 파일 확장자가 아니며 파일 자체입니다.

상세 정보 쿼리가 어떤 행을 초래하지 않는 경우 found here

+0

페이지가 오류를 발생시키지 않습니다. 그냥 빈 콘텐츠를 표시합니다. 나는 CATEGORY NAME 헤더를 볼 수 있지만 URL이 wrng이기 때문에 동적 categoryname이 없다는 것을 의미합니다. 페이지에 동적 내용이 표시되지 않지만 정적 내용 표시 –

+0

글쎄, 내 글을 입력했을 때 Lucas Renan의 대답을 봐야한다고 생각하지 않았다. –

+0

예, 죄송합니다 내 실수 : S –

0

리디렉션하지 마십시오! 리디렉션 (30x)은 404를 보내는 것과 같지 않습니다! 오류 문서와 함께 적절한 상태 코드를 보내면됩니다.

if (!$documentFound) { 
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404); 
    readfile('error404.html'); 
    exit; 
}