web-dev-qa-db-ja.com

プログラムでリダイレクトを作成する方法は?

redirect モジュールでリダイレクト301を作成しようとします。たとえば、カスタムモジュールを通じてURLソースを内部URLにリダイレクトしたいとします。

ノードを作成するときにリダイレクトを作成したいのですが。古いコンテンツをインポートし、新しいノードを作成して、古いパスを保持します。

誰かがアイデアを持っていますか?

14
Romest

リダイレクトをデータベースに保存する場合は、モジュール Redirect を使用します。このモジュールは、リダイレクトを追加するためのユーザーインターフェイスを提供します。リダイレクトはコンテンツエンティティに保存されます。コンテンツエンティティはプログラムで作成することもできます。

use Drupal\redirect\Entity\Redirect;

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

これは、インポートしたデータからノードを作成するときに行うことができます。または、ノードを作成、編集、または削除するときにリダイレクトを更新するコードをエンティティフックに配置することもできます。

25
4k4

RedirectResponseを使用してこれを実現できます。

次のリンクを参照してください

https://drupal.stackexchange.com/a/138852

6
Immanuel Paul

次のコードを追加して、.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')); 
4
tijani nasser