외부 URL로 리디렉션하기 위해 어떤 API 기능을 사용합니까?


21

Drupal 경로로 리디렉션하기 위해 모듈을 작성할 때을 사용합니다 drupal_goto.

외부 페이지로 리디렉션하는 데 사용해야하는 API 기능이 있습니까? 또는 설정되어 Location함께 drupal_set_header갈 수있는 방법은?

추신 : 나는 요청에 대해 약간의 처리를해야합니다. mod_rewrite/ mod_aliasApache 수준 또는 Drupal Path redirect모듈에서 내 문제를 해결하지 마십시오.

답변:


25

내부 및 외부 리디렉션 에는 drupal_goto () 를 사용해야합니다 .

외부 리디렉션에 '외부'옵션을 사용하십시오. drupal_goto($url, array('external' => TRUE));

drupal_goto ($ path = '', 배열 $ options = array (), $ http_response_code = 302)

$ options : (선택 사항) 다음과 같은 요소가 포함 된 추가 옵션의 연관 배열입니다.

  • 'query' : URL에 추가 할 쿼리 키 / 값 쌍의 배열 (URL 인코딩없이).
  • 'fragment' : URL에 추가 할 조각 식별자 (이름이 지정된 앵커)입니다. 선행 '#'문자를 포함하지 마십시오.
  • 'absolute' : 기본값은 FALSE입니다. 출력을 절대 링크로 강제할지 여부 (http :로 시작). RSS 피드와 같이 사이트 외부에 표시 될 링크에 유용합니다.
  • 'alias' : 기본값은 FALSE입니다. 주어진 경로가 이미 URL 별칭인지 여부
  • 'external' : 지정된 경로가 외부 URL인지 여부
  • 'language' : 선택적 언어 개체입니다. 링크되는 경로가 사이트 내부 인 경우 $ options [ 'language']가 URL의 별명을 찾는 데 사용됩니다. $ options [ 'language']를 생략하면 전역 $ language_url이 사용됩니다.
  • 'https' :이 URL이 안전한 위치를 가리켜 야하는지 여부 정의되지 않은 경우 현재 체계가 사용되므로 사용자는 각각 HTTP 또는 HTTPS를 유지합니다. TRUE는 HTTPS를 시행하고 FALSE는 HTTP를 시행하지만 변수 'https'가 TRUE로 설정된 경우에만 HTTPS를 시행 할 수 있습니다.
  • 'base_url' : 언어 종속 URL에 필요한 경우 기본 URL을 수정하기 위해 내부적으로 만 사용됩니다.
  • 'prefix' : 언어 종속 URL에 필요한 경우 경로를 수정하기 위해 내부적으로 만 사용됩니다.
  • 'script' : 클린 URL이 비활성화 될 때 사용할 Drupal 루트 디렉토리의 스크립트 파일 이름 (예 : 'index.php') 대부분의 최신 웹 서버는 자동으로 'index.php'를 찾기 때문에 기본값은 빈 문자열입니다. 클린 URL이 비활성화되면 $ path의 값이 반환 된 URL의 $ options [ 'script']에 쿼리 매개 변수 'q'로 추가됩니다. index.php를 자동으로 찾도록 구성 할 수없는 웹 서버에 Drupal을 배포하는 경우 hook_url_outbound_alter ()를 구현하여이 값을 'index.php'로 설정할 수 있습니다.
  • 'entity_type' : url ()을 호출 한 객체의 엔티티 유형입니다. entity_uri ()가 url ()을 호출 한 경우에만 설정됩니다.
  • 'entity' : URL이 생성되는 엔티티 오브젝트 (예 : 노드)입니다. entity_uri ()가 url ()을 호출 한 경우에만 설정됩니다.

$ http_response_code : (선택 사항) 리디렉션에 사용할 HTTP 상태 코드의 기본값은 302입니다. 3xx 리디렉션 상태 코드의 유효한 값은 RFC 2616 및 새 HTTP 상태 코드의 초안에 정의되어 있습니다.

301 : 영구적으로 이동 됨 (대부분의 리디렉션에 권장되는 값).

302 : 찾음 (Drupal 및 PHP의 기본값, 스팸 검색 엔진에 사용됨).

303 : 기타를보십시오.

304 : 수정되지 않았습니다.

305 : 프록시 사용

307 : 임시 리디렉션.

드루팔 8

Drupal 8은 drupal_goto 함수제거 했습니다. 외부 URL로 리디렉션 하려면 질문에 대한 다음 답변을 참조하십시오. 외부 URL로 리디렉션하는 방법은 무엇입니까? .


1
매우 좋은 답변
OV

1 튜닉 (편집 입력 Nikhil M)이 답변은 공식 API 문서보다 낫다 : api.drupal.org/api/drupal/includes%21common.inc/function/...는 (당신의 대답에, 옵션 배열은 포괄적이다 설명). 인식을 위해 Oleg도 +1합니다.
therobyouknow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.