%META:TOPICPARENT{name="VirtTipsAndTricksGuide"}% ---+Performing Internal HTTP redirects ---++What? Virtuoso as opposed to HTTP based redirection. ---++Why? Handling situations where HTTP level redirection is inadequate. For example, 303 redirection offered when implementing hashless Linked Data URIs. Instead of sending a 303 Virtuoso will redirect to the URL in "Location:" and return 200 OK. Basically, this is like curl -iL instead of curl -i, but implemented inside Virtuoso. ---++How? Directly or via URI template syntax used to construct rewrite rules for Virtuoso virtual directories / web service endpoints for the purposes of which Virtuoso offers the [[http://http://docs.openlinksw.com/virtuoso/fn_http_internal_redirect.html][http_internal_redirect function]]: http_internal_redirect ( in full_path varchar, -- Set new logical path to be redirected to [ in p_full_path varchar ] , -- Set physical path to be redirected to [ in long_url varchar ], -- Reserved for internal usage [ in keep_lpath integer ] -- Reserved for internal usage ) ---+++Example create procedure my_redirect() { declare full_path varchar; ... full_path := '/DAV/VAD/test/'; http_internal_redirect (full_path); set_user_id ('demo'); set http_charset='utf-8'; http_header ('Content-Type: text/xml; charset=UTF-8\r\n'); WS.WS.GET (path, pars, lines); return null; } } ---++Related * [[VirtTipsAndTricksGuide][Virtuoso Tips and Tricks Collection]] * [[http://docs.openlinksw.com/virtuoso/functions.html][Virtuoso Documentation]]