Come creare un reindirizzamento a livello di codice? [chiuso]


14

Provo a creare un reindirizzamento 301 con il modulo di reindirizzamento . Ad esempio, desidero reindirizzare una sorgente URL a un URL interno tramite il mio modulo personalizzato.

Voglio creare un reindirizzamento quando creo un nodo. Importa il vecchio contenuto, crea un nuovo nodo e mantieni il vecchio percorso.

Qualcuno ha un'idea?


1
Dovresti sicuramente aggiungere ulteriori informazioni alla tua domanda. Cosa hai provato fino ad ora? Qual è il tuo problema esatto? Perché non menzioni la migrazione che hai citato in un commento a una delle risposte?
leymannx,

Puoi utilizzare i seguenti frammenti di codice per creare il reindirizzamento degli URL a livello di codice. // Crea un oggetto con i parametri di reindirizzamento $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = array (); $ redirect-> redirect = 'node / 5'; // Nuovo percorso di sistema $ redirect-> redirect_options = array (); $ redirect-> type = 'redirect'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ redirect);
Aryashree Pritikrishna,

Risposte:


23

Se si desidera archiviare i reindirizzamenti nel database, utilizzare il modulo Reindirizzamento . Questo modulo fornisce un'interfaccia utente per aggiungere reindirizzamenti. I reindirizzamenti sono archiviati in un'entità di contenuto, che è anche possibile creare a livello di codice:

use Drupal\redirect\Entity\Redirect;

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

È possibile farlo nel momento in cui si creano nodi dai dati importati oppure è possibile inserire codice negli hook delle entità che aggiorna i reindirizzamenti durante la creazione, la modifica o l'eliminazione di un nodo.


5

È possibile utilizzare RedirectResponseper raggiungere questo obiettivo.

Fare riferimento al seguente link

/drupal//a/138852


Grazie per la tua risposta. Ma voglio creare un reindirizzamento quando creo un nodo. Importo un vecchio contenuto nel creare un nuovo nodo e mantengo il vecchio percorso.
Romest

4

Puoi modificare il tuo .htaccess aggiungendo questo codice:

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

O se vuoi farlo in Drupal:

return new RedirectResponse(Drupal\Core\Url::fromUri('route_name')); 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.