Programlı olarak yeniden yönlendirme nasıl oluşturulur? [kapalı]


14

Yönlendirme modülü ile bir yönlendirme 301 oluşturmaya çalışıyorum . Örneğin, bir URL kaynağını özel modülüm aracılığıyla dahili bir URL'ye yönlendirmek istiyorum.

Bir düğüm oluşturduğumda yeniden yönlendirme oluşturmak istiyorum. Eski içeriği içe aktarın, yeni bir düğüm oluşturun ve eski yolu koruyun.

Kimsenin bir fikri var mı?


1
Sorunuza kesinlikle daha fazla bilgi eklemelisiniz. Şimdiye kadar ne denedin? Kesin sorunun nedir? Neden bir cevapta yorumda bahsettiğiniz göçten bahsetmiyorsunuz?
leymannx

Programlı URL yönlendirmesi oluşturmak için aşağıdaki kod snippet'lerini kullanabilirsiniz. // Yönlendirme parametreleri ile bir nesne oluşturun $ redirect = new stdClass (); ($ yönlendirme) redirect_object_prepare; $ redirect-> source = 'eski URL'; $ redirect-> source_options = dizi (); $ redirect-> redirect = 'düğüm / 5'; // Yeni sistem yolu $ redirect-> redirect_options = array (); $ redirect-> type = 'yönlendirme'; $ redirect-> language = LANGUAGE_NONE; ($ yönlendirme) redirect_save;
Aryashree Pritikrishna

Yanıtlar:


24

Yönlendirmeleri veritabanında saklamak istiyorsanız Yönlendirme modülünü kullanın . Bu modül, yönlendirmeler eklemek için bir kullanıcı arayüzü sağlar. Yönlendirmeler, program aracılığıyla da oluşturabileceğiniz bir içerik öğesinde saklanır:

use Drupal\redirect\Entity\Redirect;

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

İçe aktarılan verilerden düğüm oluşturduğunuzda bunu yapabilir veya bir düğüm oluştururken, düzenlerken veya silerken yönlendirmeleri güncelleyen varlık kancalarına kod koyabilirsiniz.


6

Bunu RedirectResponsebaşarmak için kullanabilirsiniz .

Aşağıdaki bağlantıya bakın

/drupal//a/138852


Cevabınız için teşekkürler. Ancak bir düğüm oluşturduğumda yeniden yönlendirme oluşturmak istiyorum. Yeni bir düğüm oluşturmak için eski bir içeriği içeri aktarıyorum ve eski yolu tutuyorum.
Romest

4

Bu kodu ekleyerek .htaccess'inizi değiştirebilirsiniz:

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

Veya bunu Drupal'da yapmak istiyorsanız:

return new RedirectResponse(Drupal\Core\Url::fromUri('route_name')); 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.