Como criar um redirecionamento programaticamente? [fechadas]

14

Eu tento criar um redirecionamento 301 com o módulo de redirecionamento . Por exemplo, desejo redirecionar uma fonte de URL para uma URL interna através do meu módulo personalizado.

Quero criar um redirecionamento quando criar um nó. Importe conteúdo antigo, crie um novo nó e mantenha o caminho antigo.

Alguém tem uma ideia?

Romest
fonte
1
Você definitivamente deve adicionar mais informações à sua pergunta. O que você tentou até agora? Qual é o seu problema exato? Por que você não menciona a migração mencionada em um comentário para uma das respostas?
Leymannx
Você pode usar os trechos de código abaixo para criar um redirecionamento de URL programaticamente. // Crie um objeto com os parâmetros de redirecionamento $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'URL antigo'; $ redirect-> source_options = array (); $ redirect-> redirect = 'nó / 5'; // Novo caminho do sistema $ redirect-> redirect_options = array (); $ redirect-> type = 'redirecionar'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ redirecionar);
Aryashree Pritikrishna

Respostas:

23

Se você deseja armazenar redirecionamentos no banco de dados, use o módulo Redirecionar . Este módulo fornece uma interface de usuário para adicionar redirecionamentos. Os redirecionamentos são armazenados em uma entidade de conteúdo, que você também pode criar programaticamente:

use Drupal\redirect\Entity\Redirect;

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

Você pode fazer isso no momento em que cria nós a partir de dados importados ou pode inserir código nos ganchos de entidade que atualizam os redirecionamentos ao criar, editar ou excluir um nó.

4k4
fonte
5

Você pode usar RedirectResponsepara conseguir isso.

Consulte o seguinte link

/drupal//a/138852

Emanuel Paul
fonte
Obrigado pela sua resposta. Mas eu quero criar um redirecionamento quando eu criar um nó. Eu importo um conteúdo antigo para criar um novo nó e mantenho o caminho antigo.
Romest
4

Você pode alterar seu .htaccess adicionando este código:

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

Ou se você quiser fazer isso no Drupal:

return new RedirectResponse(Drupal\Core\Url::fromUri('route_name')); 
tijani nasser
fonte