code: def redirect(url, parameters={}, request_data={}):
          
          assert isinstance(url, basestring)
          assert isinstance(parameters, dict)
  
          if url.startswith('/'):
              url = '%s%s' % (OneLogin_Saml2_Utils.get_self_url_host(request_data), url)
  
          # Verify that the URL is to a http or https site.
          if re.search('^https?://', url) is None:
              raise OneLogin_Saml2_Error(
                  'Redirect to invalid URL: ' + url,
                  OneLogin_Saml2_Error.REDIRECT_INVALID_URL
              )
  
          # Add encoded parameters
          if url.find('?') < 0:
              param_prefix = '?'
          else:
              param_prefix = '&'
  
          for name, value in parameters.items():
  
              if value is None:
                  param = quote_plus(name)
              elif isinstance(value, list):
                  param = ''
                  for val in value:
                      param += quote_plus(name) + '[]=' + quote_plus(val) + '&'
                  if len(param) > 0:
                      param = param[0:-1]
              else:
                  param = quote_plus(name) + '=' + quote_plus(value)
  
              if param:
                  url += param_prefix + param
                  param_prefix = '&'
  
          return url
docs: Executes a redirection to the provided url (or return the target url).
  
          :param url: The target url
          :type: string
  
          :param parameters: Extra parameters to be passed as part of the url
          :type: dict
  
          :param request_data: The request as a dict
          :type: dict
  
          :returns: Url
          :rtype: string