프로그래밍 방식으로 리디렉션을 만드는 방법은 무엇입니까? [닫은]


14

리디렉션 모듈 을 사용하여 리디렉션 301을 만들려고 합니다. 예를 들어, 사용자 정의 모듈을 통해 URL 소스를 내부 URL로 리디렉션하고 싶습니다.

노드를 만들 때 리디렉션을 만들고 싶습니다. 이전 컨텐츠를 가져 와서 새 노드를 작성하고 이전 경로를 유지하십시오.

누구나 아이디어가 있습니까?


1
질문에 더 많은 정보를 추가해야합니다. 지금까지 뭐 해봤 어? 당신의 정확한 문제는 무엇입니까? 답변 중 하나에 대한 언급에서 언급 한 마이그레이션을 언급하지 않는 이유는 무엇입니까?
leymannx

아래 코드 스 니펫을 사용하여 프로그래밍 방식으로 URL 리디렉션을 만들 수 있습니다. // 리디렉션 매개 변수를 사용하여 개체를 만듭니다. $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = 배열 ​​(); $ redirect-> redirect = '노드 / 5'; // 새로운 시스템 경로 $ redirect-> redirect_options = array (); $ redirect-> type = '리디렉션'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ 리디렉션);
Aryashree Pritikrishna

답변:


23

데이터베이스에 리디렉션을 저장하려면 Redirect 모듈을 사용하십시오 . 이 모듈은 리디렉션을 추가하기위한 사용자 인터페이스를 제공합니다. 리디렉션은 콘텐츠 엔터티에 저장되며 프로그래밍 방식으로 만들 수도 있습니다.

use Drupal\redirect\Entity\Redirect;

  Redirect::create([
    'redirect_source' => 'redirects/redirect1',
    'redirect_redirect' => 'internal:/node/1',
    'language' => 'und',
    'status_code' => '301',
  ])->save();

가져온 데이터에서 노드를 작성할 때이 작업을 수행하거나 노드를 작성, 편집 또는 삭제할 때 경로 재 지정을 업데이트하는 엔티티 후크에 코드를 넣을 수 있습니다.


5

RedirectResponse이것을 달성하기 위해 사용할 수 있습니다 .

다음 링크를 참조하십시오

/drupal//a/138852


답변 주셔서 감사합니다. 그러나 노드를 만들 때 리디렉션을 만들고 싶습니다. 새 노드를 만들 때 이전 내용을 가져오고 이전 경로를 유지합니다.
Romest

4

이 코드를 추가하여 .htaccess를 변경할 수 있습니다.

#custom redirects
RewriteRule ^old/URL/path$ http://example.com/new/path [R=301,L]
#end custom redirects

또는 Drupal에서 이것을 원한다면 :

return new RedirectResponse(Drupal\Core\Url::fromUri('route_name')); 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.