Як створити перенаправлення програмно? [зачинено]


14

Я намагаюся створити перенаправлення 301 за допомогою модуля переадресації . Наприклад, я хочу перенаправити джерело URL-адреси до внутрішньої URL-адреси через мій спеціальний модуль.

Я хочу створити перенаправлення, коли я створюю вузол. Імпортуйте старий вміст, створіть новий вузол і збережіть старий шлях.

Хтось має ідею?


1
Ви обов'язково повинні додати більше інформації до свого питання. Що ви пробували поки що? Яка ваша конкретна проблема? Чому ви не згадуєте про міграцію, про яку ви згадали в коментарі до однієї з відповідей?
leymannx

Ви можете використовувати фрагменти коду нижче, щоб створити програмне переспрямування URL-адрес. // Створіть об’єкт з параметрами переспрямування $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = array (); $ redirect-> redirect = 'вузол / 5'; // Новий системний шлях $ redirect-> redirect_options = array (); $ redirect-> type = 'перенаправлення'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ перенаправлення);
Aryashree Pritikrishna

Відповіді:


24

Якщо ви хочете зберігати переадресації в базі даних, використовуйте модуль Перенаправлення . Цей модуль надає інтерфейс користувача для додавання переадресацій. Переспрямування зберігаються в об'єкті вмісту, яку ви також можете створити програмно:

use Drupal\redirect\Entity\Redirect;

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

Це можна зробити під час створення вузлів із імпортованих даних або ви можете помістити код у гачки сутності, що оновлює переадресації під час створення, редагування чи видалення вузла.


6

Ви можете використовувати RedirectResponseдля досягнення цього.

Перейдіть за наступним посиланням

/drupal//a/138852


Дякую за вашу відповідь. Але я хочу створити перенаправлення, коли я створю вузол. Я імпортую старий вміст, щоб створити новий вузол, і я зберігаю старий шлях.
Ромест

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')); 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.