Как создать перенаправление программно? [закрыто]

14

Я пытаюсь создать перенаправление 301 с модулем перенаправления . Например, я хочу перенаправить источник URL на внутренний URL через мой пользовательский модуль.

Я хочу создать перенаправление при создании узла. Импортируйте старый контент, создайте новый узел и сохраните старый путь.

У кого-нибудь есть идея?

Romest
источник
1
Вы обязательно должны добавить больше информации к вашему вопросу. что ты уже испробовал? В чем ваша проблема? Почему вы не упоминаете миграцию, которую вы упомянули в комментарии к одному из ответов?
leymannx
Вы можете использовать приведенные ниже фрагменты кода для программного перенаправления URL. // Создать объект с параметрами перенаправления $ redirect = new stdClass (); redirect_object_prepare ($ редирект); $ redirect-> source = 'old-url'; $ redirect-> source_options = array (); $ redirect-> redirect = 'node / 5'; // Новый системный путь $ redirect-> redirect_options = array (); $ redirect-> type = 'redirect'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ редирект);
Арьяшри Притикришна

Ответы:

23

Если вы хотите хранить перенаправления в базе данных, используйте модуль Redirect . Этот модуль предоставляет пользовательский интерфейс для добавления перенаправлений. Перенаправления хранятся в объекте контента, который вы также можете создать программно:

use Drupal\redirect\Entity\Redirect;

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

Вы можете сделать это во время создания узлов из импортированных данных или поместить код в ловушки сущностей, которые обновляют перенаправления при создании, редактировании или удалении узла.

4k4
источник
5

Вы можете использовать RedirectResponseдля достижения этой цели.

См. Следующую ссылку

/drupal//a/138852

Иммануил Пол
источник
Спасибо за Ваш ответ. Но я хочу создать перенаправление, когда я создаю узел. Я импортирую старый контент, создаю новый узел и сохраняю старый путь.
Romest
4

Вы можете изменить свой .htaccess, добавив этот код:

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

Или, если вы хотите сделать это в Drupal:

return new RedirectResponse(Drupal\Core\Url::fromUri('route_name')); 
Тиджани Насер
источник