¿Cómo crear una redirección mediante programación? [cerrado]


14

Intento crear una redirección 301 con el módulo de redireccionamiento . Por ejemplo, quiero redirigir una fuente de URL a una URL interna a través de mi módulo personalizado.

Quiero crear una redirección cuando creo un nodo. Importe contenido antiguo, cree un nuevo nodo y mantenga la ruta anterior.

¿Alguien tiene una idea?


1
Definitivamente deberías agregar más información a tu pregunta. ¿Qué has intentado hasta ahora? ¿Cuál es tu problema exacto? ¿Por qué no mencionas la migración que mencionaste en un comentario a una de las respuestas?
leymannx

Puede usar los siguientes fragmentos de código para crear redireccionamientos de URL mediante programación. // Crear un objeto con los parámetros de redireccionamiento $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = array (); $ redirect-> redirect = 'nodo / 5'; // Nueva ruta del sistema $ redirect-> redirect_options = array (); $ redirect-> type = 'redirect'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ redirect);
Aryashree Pritikrishna

Respuestas:


23

Si desea almacenar redirecciones en la base de datos, use el módulo Redirect . Este módulo proporciona una interfaz de usuario para agregar redireccionamientos. Las redirecciones se almacenan en una entidad de contenido, que también puede crear mediante programación:

use Drupal\redirect\Entity\Redirect;

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

Puede hacer esto en el momento en que crea nodos a partir de datos importados o puede poner código en ganchos de entidad que actualiza las redirecciones al crear, editar o eliminar un nodo.


5

Puedes usar RedirectResponsepara lograr esto.

Consulte el siguiente enlace

/drupal//a/138852


Gracias por tu respuesta. Pero quiero crear una redirección cuando creo un nodo. Importo un contenido antiguo para crear un nuevo nodo y mantengo la ruta anterior.
Romest

4

Puede cambiar su .htaccess agregando este código:

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

O si quieres hacer esto en Drupal:

return new RedirectResponse(Drupal\Core\Url::fromUri('route_name')); 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.