404 페이지에 탐색 링크가 없습니다


11

존재하지 않는 페이지를 방문해도 다른 페이지와 마찬가지로 기본 및 보조 링크가 계속 표시되지만 404 페이지에는 탐색 링크가 없습니다. 404 페이지에 탐색 링크 없음 도 참조하십시오 .

나는 해결책을 찾았지만 다른 것이 이것을 고칠 수 있다면 기쁘다 (아마도 여분의 모듈을 사용하지 않고).

답변:


14

사용자 정의 모듈에서 페이지를 정의하여이를 수행 할 수 있습니다.

을 사용하여 "페이지를 찾을 수 없음"범주의 페이지를 작성하십시오 hook_menu().

function MODULE_menu() {
  $items['page-not-found'] = array(
    'title' => '',
    'page callback' => 'MODULE_page_not_found',
    'access callback' => TRUE,
  );
  return $items;
}

function MODULE_page_not_found() {
  drupal_set_title('Page not found');
  $cust_err = "";
  $cust_err = $cust_err . "The requested page " . current_path() . " could not be found";
  return $cust_err;
}

페이지 콜백은 current_path()404 오류의 원인이되는 페이지 경로를 반환하는 데 사용 됩니다.

이동 관리> 구성> 시스템> 사이트 정보 및 입력 페이지를--찾을 수 없습니다 (에 정의 된 같은 이름 hook_menu아래) 기본 404 (찾을 수 없음) 페이지 .

snap1

이제 오류 페이지가 다음 스크린 샷과 같이 나타납니다.

snap2

모든 탐색 링크와 오류를 생성하는 페이지 URL (원래의 페이지를 찾을 수 없음)이 포함되어 있음이 분명합니다. 그리고 @ Nikhil 이 위의 답변에서 언급 한 모듈 은 "요청한 페이지를 찾을 수 없습니다."를 출력합니다. 오류가 발생한 페이지의 URL을 포함하지 않습니다.


페이지에 탐색 링크가 표시됩니까?
niksmac

1
@NikhilM 나는 이것을 테스트했고 스크린 샷은 실제 ;-)
AjitS

나는 지금 그것을 테스트했습니다. 페이지를 찾을 수 없음 페이지에 표시된 텍스트를 사용자 정의합니다. 그러나 분명히 다른 곳의 기본 텍스트를 보여줍니다! 드루팔에서 무슨 일이야?
shekoufeh

나는 어제 직장에서 매우 좋은 해결책으로 어려움을 겪고있었습니다.
Cyclonecode

11

이 작품 만들 수있는 모듈이 404 탐색

404 Not Found 오류 페이지에서 Drupal은 성능상의 이유로 웹 사이트의 모든 탐색 링크 렌더링을 건너 뜁니다 *. 이들 중 일부는 다음과 같습니다.

"기본 링크"블록 및 기타 메뉴 링크 블록 테마의 기본 링크 및 보조 링크. * admin / config / system / site 정보에서 "기본 404 (찾을 수 없음)"페이지를 구성하지 않은 경우

또한 D7에서이 문제를 해결하기 위한 패치 가 있습니다.

D8 페이지에서 또한


6

좋은 모듈 대안도 있습니다 :

  • 404 검색

    표준 "404 페이지를 찾을 수 없음"을 표시하는 대신이 모듈은 URL에서 키워드를 검색합니다. 예를 들어 사용자가 http://example.com/does/not/exist 로 이동하면 이 모듈에서 검색을 수행합니다. "존재하지 않음"에 대해 404 페이지 대신 검색 결과를 표시합니다. 이렇게하면 다른 사이트 또는 검색 색인에서 링크 된 이전 URL에서 오는 방문자를 유지하는 데 도움이됩니다.

  • 빠른 404

    Drupal은 비싼 404 오류를 가지고 있습니다. '평균'모듈로드가있는 '평균'사이트에서 404를 전달하기 위해 서버에서 소비되는 60-100MB의 메모리를 볼 수 있습니다. 잘못된 .gif 링크가 있고 .css 파일이없는 페이지를 고려하십시오. 이 페이지는 페이지의 실제로드와 함께 2 개의 404를 생성합니다. 아마도 60MB가 아닌 해당 페이지에 180MB의 메모리를보고있을 것입니다.


3

사용자 정의 모듈에서 페이지를 정의하여이를 수행 할 수 있습니다.

hook_menu ()를 사용하여 "페이지를 찾을 수 없음"카테고리의 페이지를 작성하십시오.

 function MODULE_menu() {
   $items['page-not-found'] = array(
     'title' => '',
     'page callback' => 'MODULE_page_not_found',
     'access callback' => TRUE,
   );
   return $items;
 }

 function MODULE_page_not_found() {
   drupal_set_title('Page not found');
   $cust_err = "";
   $cust_err = $cust_err . "The requested page " . current_path() . " ould not be found";
   return $cust_err;
 }

거의 좋습니다. 그러나이 코드는 다음을 반환합니다.

"요청한 페이지를 찾을 수 없습니다"

current_path ()request_uri () 로 변경해야 하며 다음을 반환합니다.

"요청한 페이지 / request_uri을 (를) 찾을 수 없습니다"


1
오류 메시지를로 변경했습니다 t('The requested page "@path" could not be found.', array('@path' => request_uri()));. 이렇게하면 사이트가 다국어 일 때 기본 Drupal 번역이 사용됩니다.
Jeroen

당신은 옳습니다, 그것은 좋은 습관입니다 =)
Andy Mark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.