web-dev-qa-db-fra.com

Comment créer une redirection par programmation?

J'essaie de créer une redirection 301 avec le module redirect . Par exemple, je souhaite rediriger une source d'URL vers une URL interne via mon module personnalisé.

Je veux créer une redirection lorsque je crée un nœud. Importez l'ancien contenu, créez un nouveau nœud et conservez l'ancien chemin.

Quelqu'un a une idée?

14
Romest

Si vous souhaitez stocker des redirections dans la base de données, utilisez le module Redirect . Ce module fournit une interface utilisateur pour ajouter des redirections. Les redirections sont stockées dans une entité de contenu, que vous pouvez également créer par programmation:

use Drupal\redirect\Entity\Redirect;

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

Vous pouvez le faire au moment où vous créez des nœuds à partir de données importées ou vous pouvez mettre du code dans des crochets d'entité qui met à jour les redirections lors de la création, de la modification ou de la suppression d'un nœud.

25
4k4

Vous pouvez utiliser RedirectResponse pour y parvenir.

Référez-vous au lien suivant

https://drupal.stackexchange.com/a/138852

6
Immanuel Paul

Vous pouvez modifier votre .htaccess en ajoutant ce code:

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

Ou si vous voulez le faire en Drupal:

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