如何以编程方式创建重定向?[关闭]


14

我尝试使用重定向模块创建重定向301 。例如,我想通过我的自定义模块将URL源重定向到内部URL。

我想在创建节点时创建重定向。导入旧内容,创建新节点并保留旧路径。

有人有主意吗?


1
您绝对应该在问题中添加更多信息。你都尝试了些什么?你的确切问题是什么?您为什么不提及对答案之一的评论中提到的迁移?
leymannx

您可以使用以下代码段以编程方式创建URL重定向。//创建一个带有重定向参数的对象$ redirect = new stdClass(); redirect_object_prepare($ redirect); $ redirect-> source ='旧网址'; $ redirect-> source_options = array(); $ redirect-> redirect ='node / 5'; //新的系统路径$ redirect-> redirect_options = array(); $ redirect-> type ='重定向'; $ redirect-> language = LANGUAGE_NONE; redirect_save($ redirect);
Aryashree Pritikrishna,

Answers:


24

如果要将重定向存储在数据库中,请使用Redirect模块。该模块提供了用于添加重定向的用户界面。重定向存储在内容实体中,您也可以通过编程方式创建该内容:

use Drupal\redirect\Entity\Redirect;

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

您可以在根据导入的数据创建节点时执行此操作,也可以将代码放入实体钩子中,以在创建,编辑或删除节点时更新重定向。



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')); 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.