Redirect to a new page from within a Drupal site

烂漫一生 提交于 2019-12-04 10:47:56

If all you want is to redirect the users to the same site, when they follow a link that takes them to http://www.example.com/external, then you can implement hook_menu() using code similar to the following one:

function mymodule_menu() {
  $items = array();

  $items['external'] = array(
    'title' => 'Redirect', 
    'page callback' => 'mymodule_redirect', 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function mymodule_redirect() {
  drupal_goto($url, array('external' => TRUE));
}

If the URL to which the users are redirected depends from a value passed in the URL, then you can use code similar to the following one:

function mymodule_menu() {
  $items = array();

  $items['external/%'] = array(
    'title' => 'Redirect', 
    'page callback' => 'mymodule_redirect',
    'page arguments' => array(1), 
    'access callback' => TRUE, 
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function mymodule_redirect($id) {
  // Calculate $url basing on the value of $id.
  drupal_goto($url, array('external' => TRUE));
}
Clive

You could install the Path Redirect module which will let you do exactly that, no coding required.

If you're using Drupal 7, you want the Redirect module.

If you want to redirect an existing URL, another way via the UI is to use the popular Rules module:

e.g: "Reaction Rule" export, redirect homepage to external domain:

{ "rules_redirect_homepage" : {
    "LABEL" : "Redirect homepage",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "data_is" : { "data" : [ "site:current-page:url" ], "value" : [ "site:url" ] } }
    ],
    "DO" : [ { "redirect" : { "url" : "http:\/\/example.com" } } ]
  }
} 

Can be imported at admin/config/workflow/rules/reaction/import

you have to download the modules that Clive mentioned and you can add a menu link that redirect to external site without any module

1- Go to admin/structure/menu

2- choice the menu that you want to add the url to and click on {add Link}

3- add the external Path in "path" field like the following "http://yahoo.com"

good luck

If you're using Drupal 8, you can use the class RedirectResponse to do this.

use Symfony\Component\HttpFoundation\RedirectResponse;

The details of how to implement, you can read this post How to sample redirect page on drupal 8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!