def redirect_to_url(req, url, redirection_type=None, norobot=False):
    """
    Redirect current page to url.
    @param req: request as received from apache
    @param url: url to redirect to
    @param redirection_type: what kind of redirection is required:
    e.g.: apache.HTTP_MULTIPLE_CHOICES             = 300
          apache.HTTP_MOVED_PERMANENTLY            = 301
          apache.HTTP_MOVED_TEMPORARILY            = 302
          apache.HTTP_SEE_OTHER                    = 303
          apache.HTTP_NOT_MODIFIED                 = 304
          apache.HTTP_USE_PROXY                    = 305
          apache.HTTP_TEMPORARY_REDIRECT           = 307
    The default is apache.HTTP_MOVED_TEMPORARILY
    @param norobot: wether to instruct crawlers and robots such as GoogleBot
        not to index past this point.
    @see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3
    """
    url = url.strip()
    if redirection_type is None:
        redirection_type = apache.HTTP_MOVED_TEMPORARILY

    from flask import redirect
    r = redirect(url, code=redirection_type)
    raise apache.SERVER_RETURN(r)
    # FIXME enable code bellow

    del req.headers_out["Cache-Control"]
    req.headers_out["Cache-Control"] = "no-cache, private, no-store, " \
        "must-revalidate, post-check=0, pre-check=0, max-age=0"
    req.headers_out["Pragma"] = "no-cache"

    if norobot:
        req.headers_out[
            "X-Robots-Tag"] = "noarchive, nosnippet, noindex, nocache"

    user_agent = req.headers_in.get('User-Agent', '')
    if 'Microsoft Office Existence Discovery' in user_agent or 'ms-office' in user_agent:
        # HACK: this is to workaround Microsoft Office trying to be smart
        # when users click on URLs in Office documents that require
        # authentication. Office will check the validity of the URL
        # but will pass the browser the redirected URL rather than
        # the original one. This is incompatible with e.g. Shibboleth
        # based SSO since the referer would be lost.
        # See: http://support.microsoft.com/kb/899927
        req.status = 200
        req.content_type = 'text/html'
        if req.method != 'HEAD':
            req.write("""
<html>
    <head>
        <title>Intermediate page for URLs clicked on MS Office Documents</title>
        <meta http-equiv="REFRESH" content="5;url=%(url)s"></meta>
    </head>
    <body>
        <p>You are going to be redirected to the desired content within 5 seconds. If the redirection does not happen automatically please click on <a href="%(url)s">%(url_ok)s</a>.</p>
    </body>
</html>""" % {
                'url': escape(req.unparsed_uri, True),
                'url_ok': escape(req.unparsed_uri)
            })
        raise apache.SERVER_RETURN(apache.DONE)

    req.headers_out["Location"] = url

    if req.response_sent_p:
        raise IOError("Cannot redirect after headers have already been sent.")

    req.status = redirection_type
    req.write('<p>Please go to <a href="%s">here</a></p>\n' % url)

    raise apache.SERVER_RETURN(apache.DONE)
def redirect_to_url ( req , url , redirection_type = None , norobot = False ) : url = url . strip ( ) if redirection_type is None : redirection_type = apache . HTTP_MOVED_TEMPORARILY from flask import redirect r = redirect ( url , code = redirection_type ) raise apache . SERVER_RETURN ( r ) del req . headers_out [ "Cache-Control" ] req . headers_out [ "Cache-Control" ] = "no-cache, private, no-store, " "must-revalidate, post-check=0, pre-check=0, max-age=0" req . headers_out [ "Pragma" ] = "no-cache" if norobot : req . headers_out [ "X-Robots-Tag" ] = "noarchive, nosnippet, noindex, nocache" user_agent = req . headers_in . get ( 'User-Agent' , '' ) if 'Microsoft Office Existence Discovery' in user_agent or 'ms-office' in user_agent : req . status = 200 req . content_type = 'text/html' if req . method != 'HEAD' : req . write ( """
<html>
    <head>
        <title>Intermediate page for URLs clicked on MS Office Documents</title>
        <meta http-equiv="REFRESH" content="5;url=%(url)s"></meta>
    </head>
    <body>
        <p>You are going to be redirected to the desired content within 5 seconds. If the redirection does not happen automatically please click on <a href="%(url)s">%(url_ok)s</a>.</p>
    </body>
</html>""" % { 'url' : escape ( req . unparsed_uri , True ) , 'url_ok' : escape ( req . unparsed_uri ) } ) raise apache . SERVER_RETURN ( apache . DONE ) req . headers_out [ "Location" ] = url if req . response_sent_p : raise IOError ( "Cannot redirect after headers have already been sent." ) req . status = redirection_type req . write ( '<p>Please go to <a href="%s">here</a></p>\n' % url ) raise apache . SERVER_RETURN ( apache . DONE )
Redirect current page to url.
    @param req: request as received from apache
    @param url: url to redirect to
    @param redirection_type: what kind of redirection is required:
    e.g.: apache.HTTP_MULTIPLE_CHOICES             = 300
          apache.HTTP_MOVED_PERMANENTLY            = 301
          apache.HTTP_MOVED_TEMPORARILY            = 302
          apache.HTTP_SEE_OTHER                    = 303
          apache.HTTP_NOT_MODIFIED                 = 304
          apache.HTTP_USE_PROXY                    = 305
          apache.HTTP_TEMPORARY_REDIRECT           = 307
    The default is apache.HTTP_MOVED_TEMPORARILY
    @param norobot: wether to instruct crawlers and robots such as GoogleBot
        not to index past this point.
    @see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3