Bagaimana cara membuat pengalihan secara terprogram? [Tutup]

14

Saya mencoba membuat pengalihan 301 dengan modul pengalihan . Misalnya, saya ingin mengarahkan sumber URL ke URL internal melalui modul khusus saya.

Saya ingin membuat pengalihan ketika saya membuat simpul. Impor konten lama, buat simpul baru dan pertahankan jalur lama.

Adakah yang punya ide?

Romest
sumber
1
Anda pasti harus menambahkan lebih banyak informasi ke pertanyaan Anda. Apa yang sudah Anda coba sejauh ini? Apa masalah sebenarnya Anda? Mengapa Anda tidak menyebutkan migrasi yang Anda sebutkan di komentar ke salah satu jawaban?
leymannx
Anda dapat menggunakan cuplikan kode di bawah ini untuk membuat pengarahan ulang URL secara terprogram. // Buat objek dengan parameter redirect $ redirect = new stdClass (); redirect_object_prepare ($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = array (); $ redirect-> redirect = 'node / 5'; // Jalur sistem baru $ redirect-> redirect_options = array (); $ redirect-> type = 'redirect'; $ redirect-> language = LANGUAGE_NONE; redirect_save ($ redirect);
Aryashree Pritikrishna

Jawaban:

23

Jika Anda ingin menyimpan pengalihan dalam basis data, gunakan modul Redirect . Modul ini menyediakan antarmuka pengguna untuk menambahkan arahan ulang. Pengalihan disimpan dalam entitas konten, yang juga dapat Anda buat secara terprogram:

use Drupal\redirect\Entity\Redirect;

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

Anda dapat melakukan ini pada saat Anda membuat node dari data yang diimpor atau Anda bisa memasukkan kode dalam kait entitas yang memperbarui pengalihan saat membuat, mengedit, atau menghapus node.

4k4
sumber
5

Anda dapat menggunakannya RedirectResponseuntuk mencapai ini.

Lihat tautan berikut

/drupal//a/138852

Immanuel Paul
sumber
Terima kasih atas jawaban anda. Tetapi saya ingin membuat pengalihan ketika saya membuat simpul. Saya mengimpor konten lama di buat simpul baru dan saya tetap jalan lama.
Romest
4

Anda dapat mengubah .htaccess Anda dengan menambahkan kode ini:

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

Atau jika Anda ingin melakukan ini di Drupal:

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