rp_internal_redirect (public)
rp_internal_redirect [ -absolute_path ] path
Defined in packages/acs-tcl/tcl/request-processor-procs.tcl
Tell the request processor to return some other page. The path can either be relative to the current directory (e.g. "some-template") relative to the server root (e.g. "/packages/my-package/www/some-template"), or an absolute path (e.g. "/home/donb/openacs-4/templates/some-cms-template"). When there is no extension then the request processor will choose the matching file according to the extension preferences. Parameters will stay the same as in the initial request. Keep in mind that if you do an internal redirect to something other than the current directory, relative links returned to the clients browser may be broken (since the client will have the original URL). Update the ns_set obtained via ns_getform if you want to feed query variables to the redirected page.
- Switches:
- -absolute_path
(boolean) (optional)- If set the path is an absolute path within the host filesystem
- Parameters:
- path - path to the file to serve
- See Also:
- ns_getform
- ns_set
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- create_workflow_with_instance
Source code: # protect from circular redirects if { ![info exists ::__rp_internal_redirect_recursion_counter] } { set ::__rp_internal_redirect_recursion_counter 0 } elseif { $::__rp_internal_redirect_recursion_counter > 10 } { error "rp_internal_redirect: Recursion limit exceeded." } else { incr ::__rp_internal_redirect_recursion_counter } if { [string is false $absolute_path_p] } { if { [string index $path 0] ne "/" } { # it's a relative path, prepend the current location set path "[file dirname [ad_conn file]]/$path" } else { set path "$::acs::rootdir$path" } } # Save the current file setting. set saved_file [ad_conn file] rp_serve_abstract_file $path # # Restore the file setting. We need to do this because # rp_serve_abstract_file sets it to the path we internally # redirected to, and rp_handler will cache the file setting # internally in the ::tcl_url2file variable when PerformanceModeP # is switched on. This way it caches the location that was # originally requested, not the path that we redirected to. # ad_conn -set file $saved_fileXQL Not present: Generic, PostgreSQL, Oracle