Redirect to a new page from within a Drupal site

主宰稳场 提交于 2020-01-01 14:06:48

问题


I'm working with a Drupal site, and we want to set up a special URL that redirects to an external site. In other words, if http://www.mysite.com is our Drupal site, we want to have http://www.mysite.com/external redirect to the external site.

I have very little experience with Drupal and have no idea how to set this up. Any help is appreciated!


回答1:


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));
}



回答2:


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.




回答3:


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




回答4:


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




回答5:


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



来源:https://stackoverflow.com/questions/7284848/redirect-to-a-new-page-from-within-a-drupal-site

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