Wie erstelle ich programmgesteuert eine Umleitung? [geschlossen]

14

Ich versuche, eine Umleitung 301 mit dem Umleitungsmodul zu erstellen . Ich möchte beispielsweise eine URL-Quelle über mein benutzerdefiniertes Modul auf eine interne URL umleiten.

Ich möchte beim Erstellen eines Knotens eine Umleitung erstellen. Importieren Sie alte Inhalte, erstellen Sie einen neuen Knoten und behalten Sie den alten Pfad bei.

Hat jemand eine Idee?

Romest
quelle
1
Sie sollten Ihrer Frage auf jeden Fall weitere Informationen hinzufügen. Was hast du bisher versucht? Was ist Ihr genaues Problem? Warum erwähnen Sie nicht die Migration, die Sie in einem Kommentar zu einer der Antworten erwähnt haben?
Leymannx
Sie können die folgenden Codefragmente verwenden, um eine programmgesteuerte URL-Umleitung zu erstellen. // Erzeuge ein Objekt mit den Umleitungsparametern $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = array (); $ redirect-> redirect = 'node / 5'; // Neuer Systempfad $ redirect-> redirect_options = array (); $ redirect-> type = 'redirect'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ redirect);
Aryashree Pritikrishna

Antworten:

23

Wenn Sie Weiterleitungen in der Datenbank speichern möchten, verwenden Sie das Modul Weiterleiten . Dieses Modul bietet eine Benutzeroberfläche zum Hinzufügen von Weiterleitungen. Die Weiterleitungen werden in einer Inhaltsentität gespeichert, die Sie auch programmgesteuert erstellen können:

use Drupal\redirect\Entity\Redirect;

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

Sie können dies zu dem Zeitpunkt tun, an dem Sie Knoten aus importierten Daten erstellen, oder Sie können Code in Entity-Hooks einfügen, der die Weiterleitungen beim Erstellen, Bearbeiten oder Löschen eines Knotens aktualisiert.

4k4
quelle
5

Mit können Sie dies RedirectResponseerreichen.

Siehe folgenden Link

/drupal//a/138852

Immanuel Paul
quelle
Danke für deine Antwort. Aber ich möchte eine Umleitung erstellen, wenn ich einen Knoten erstellen. Ich importiere einen alten Inhalt, um einen neuen Knoten zu erstellen, und ich behalte den alten Pfad.
Romest
4

Sie können Ihren .htaccess ändern, indem Sie diesen Code hinzufügen:

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

Oder wenn Sie dies in Drupal tun wollen:

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