How to redirect, change or replace the "user/register" link to another registration page, such as "civicrm/contribute/transact&reset=1&id=1"?

Why? Because our "Drupal users" are (paid) members, they have to choose a membership type, they get informed about the corresponding fee (and how to pay offline) and have to provide additional member information (postal address, day of birth,...). All this is handled by a civiMember page, which creates also a Drupal user (user name and password), blocked at the beginning (changed to active as soon as payment is received). We probably have to keep the Drupal user login block, for registered users (paid members) to login.


2 Answers 2


The easiest solution I think here is just redirect it at the Apache (.htaccess) level with a rewrite rule:

RewriteRule ^user/register$ /civicrm/contribute/transact&reset=1&id=1 [NC,L,R=301]
  • RewriteRule is not allowed by our shared hosting provider.
    – MarkDQ
    Commented May 8, 2015 at 17:05

The Drupal Redirect module can push people from user/register to a civi form

  • It works... but I get an "no access rights" error. The URL is transformed: [domain]?q=civicrm/contribute/transact%26reset%3D1%26id%3D1 The original URL gives no error: [domain]?q=civicrm/contribute/transact&reset=1&id=1 Isn't the "translation" from & and = into % values something neutral in a URL? so why the & and = works, and the % does not.
    – MarkDQ
    Commented May 7, 2015 at 10:02
  • Sorry, I think you need to use Alias and Redirect, eg set Alias for civicrm/contribute/transact?reset=1&id=2 to /join. And set Redirect from user/register to join. If that resolves it i will update my answer Commented May 7, 2015 at 20:57
  • great thx for your help, but... same result. Alias and Redirect both are working perfectly, but i still get the "no access rights" error. Again, replacing the new alias by the original civiCRM url gives no error, displays the "new member" page as wanted.
    – MarkDQ
    Commented May 7, 2015 at 21:53
  • Redirecting to a page with drupal_goto() seems to work (I will test later): drupal_goto('civicrm/contribute/transact', array('query'=>array('reset'=>'1','id'=>'1',)) );
    – MarkDQ
    Commented May 8, 2015 at 23:48
  • The suggestion of using drupal_goto() was found here (the syntax has changed since 2008): civicactions.com/blog/…
    – MarkDQ
    Commented May 9, 2015 at 0:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.