Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

HTTP Silent Redirect

 [1/3] from: vonja:sbcglobal at: 22-Sep-2008 22:46


Hello Rebol List, I'm attempting to do a "silent" http redirect via REBOL rather than an Apache mod_rewrite. In Apache it could be written as: RewriteRule ^secret_crush_prank/?$ /var/chroot/html/go/secret_crush_prank.html [NC,L] If the client visited http://www.domain.com/secret_crush_prank the client would be silently redirected to another page without seeing the new URI location in the Address bar of the browser. I found the following on a Rebol archive but it only does a standard redirect. I've been trying to add different status codes to redirect silently but no success. --------------------------------------------------- REBOL [] http-redir: func [url] [ print join "Location: " url print join "Expires: 0" newline ] http-redir http://www.domain.com/go/secret_crush_prank ---------------------------------------------------- Any suggestions? Thank you for your help in advance.

 [2/3] from: hallvard::ystad::babelserver::org at: 23-Sep-2008 8:33


Hi Vonja, A silent redirect actually isn't a redirect. It's simply Apache serving some other document for the script. So if you have two files: 1.r and 2.r and when you get a request for 1.r, and you'd like to redirect silently to 2.r, you'll just have to serve 2.r (and not say anything about it to the browser). There is no way for the browser (at least not for the browsers I know) to show another URI than the actual one in the address bar. Here's a sample (not tested!): replace incoming-url "1.r" "2.r" print read next find incoming-url "/" # remove leading slash first .. So you actually don't mess with the headers. If you prefer to do the rewrite in a script made for that intent only, Apache will let you do the rewrite processing with a rebol script: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap The apache directive would look something like this: RewriteMap to2-map prg:/path/to/map.1to2.r Hope this helps, HY Dixit vonja-sbcglobal.net (07.46 23.09.2008):

 [3/3] from: tim-johnsons::web::com at: 23-Sep-2008 8:28


On Monday 22 September 2008, vonja-sbcglobal.net wrote:
> Hello Rebol List, > I'm attempting to do a "silent" http redirect via REBOL
<<quoted lines omitted: 5>>
> the client would be silently redirected to another page without > seeing the new URI location in the Address bar of the browser.
Hello Vonja: I'm not sure just what your end use is, and I'm a bit confused about what you mean by "silent redirect" because to me the term seems to be an oxmoron. So follows two code snippets: one for a redirect: ( in python, but easy to translate to rebol) def js_redirect(S,emit=None): """Compose a javascript redirection.""" R = '<SCRIPT language="JavaScript">window.location="%s"</script>' % S if emit: print R else: return R that should translate to something like (untested) reb-redirect: func[URL][print rejoin[{<SCRIPT language="JavaScript">window.location="} URL {</script>}] But if you were doing something like a "silent get url" - like the silentposturl method used by credit card authorizers, as an example - here's an idea employing the rebol command line and another script on my desktop:
>> res: read
http://bart.johnson.com/cgi-bin/baker/reb/baker.r/execute?task=List-Queries ;;Capturing the output from the script in the 'res variable suppresses any ;;output and if I look at baker.dbg (the debug log for baker.r), I see that both the 'execute' path part and the 'task' name/value pair have been logged. Does either of these help? regards tim

Notes
  • Quoted lines have been omitted from some messages.
    View the message alone to see the lines that have been omitted