プログラムでリダイレクトを作成する方法は?[閉まっている]


14

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

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

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


1
質問には必ず情報を追加してください。これまでに何を試しましたか?あなたの正確な問題は何ですか?回答の1つに対するコメントで言及した移行について言及しないのはなぜですか?
レイマンス

以下のコードスニペットを使用して、プログラムでURLリダイレクトを作成できます。//リダイレクトパラメータを使用してオブジェクトを作成します$ redirect = new stdClass(); redirect_object_prepare($ redirect); $ redirect-> source = 'old-url'; $ redirect-> source_options = array(); $ redirect-> redirect = 'node / 5'; //新しいシステムパス$ redirect-> redirect_options = array(); $ redirect-> type = 'redirect'; $ redirect-> language = LANGUAGE_NONE; redirect_save($ redirect);
アリャシュリープリティクリシュナ

回答:


23

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

use Drupal\redirect\Entity\Redirect;

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

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


5

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')); 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.