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?
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.
Vous pouvez utiliser RedirectResponse
pour y parvenir.
Référez-vous au lien suivant
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'));