redirect モジュールでリダイレクト301を作成しようとします。たとえば、カスタムモジュールを通じてURLソースを内部URLにリダイレクトしたいとします。
ノードを作成するときにリダイレクトを作成したいのですが。古いコンテンツをインポートし、新しいノードを作成して、古いパスを保持します。
誰かがアイデアを持っていますか?
リダイレクトをデータベースに保存する場合は、モジュール Redirect を使用します。このモジュールは、リダイレクトを追加するためのユーザーインターフェイスを提供します。リダイレクトはコンテンツエンティティに保存されます。コンテンツエンティティはプログラムで作成することもできます。
use Drupal\redirect\Entity\Redirect;
Redirect::create([
'redirect_source' => 'redirects/redirect1',
'redirect_redirect' => 'internal:/node/1',
'language' => 'und',
'status_code' => '301',
])->save();
これは、インポートしたデータからノードを作成するときに行うことができます。または、ノードを作成、編集、または削除するときにリダイレクトを更新するコードをエンティティフックに配置することもできます。
次のコードを追加して、.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'));