Comment créer une redirection par programmation? [fermé]

14

J'essaie de créer une redirection 301 avec le module de redirection . 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?

Romest
la source
1
Vous devez certainement ajouter plus d'informations à votre question. Qu'avez-vous essayé jusqu'à présent? Quel est votre problème exact? Pourquoi ne mentionnez-vous pas la migration que vous avez mentionnée dans un commentaire à l'une des réponses?
leymannx
Vous pouvez utiliser les extraits de code ci-dessous pour créer une redirection d'URL par programme. // Crée un objet avec les paramètres de redirection $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = array (); $ redirect-> redirect = 'node / 5'; // Nouveau chemin système $ redirect-> redirect_options = array (); $ redirect-> type = 'redirect'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ redirect);
Aryashree Pritikrishna

Réponses:

23

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.

4k4
la source
5

Vous pouvez utiliser RedirectResponsepour y parvenir.

Référez-vous au lien suivant

/drupal//a/138852

Emmanuel Paul
la source
Merci pour votre réponse. Mais je veux créer une redirection lorsque je crée un nœud. J'importe un ancien contenu pour créer un nouveau nœud et je garde l'ancien chemin.
Romest
4

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 dans Drupal:

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