|
|
Documentation - Modules
3.8.4. Redirect
The redirect module allows requests to be redirected to different pages, by
providing the following methods:
- internal( uri ):
Performs an internal redirect. All
processing on the current page ends, the output buffer is cleared and
processing continues at the named uri.
The browser URI remains
unchanged, and does not realise that a redirect has even occurred during
processing.
- external( uri, [permanent] ):
Performs an external redirect
using the HTTP Location header to a new uri. Processing of the
current file continues unless you raise spyceDone,
but the content is ignored (ie. the buffer is
cleared at the end). The status of the document is set to 301 MOVED
PERMANENTLY or 302 MOVED TEMPORARILY, depending on the permanent
boolean parameter, which defaults to false or temporary. The redirect
document is sent to the browser, which requests the new relative uri.
- externalRefresh( uri, [seconds] ):
Performs an external
redirect using the HTTP Refresh header a new uri. Processing of the
current file continues, and will be displayed on the browser as a regular
document. Unless interrupted by the user, the browser will request the new
URL after the specified number of seconds, which defaults to zero if
omitted. Many websites use this functionality to show some page, while a
file is being downloaded. To do this, one would show the page using Spyce,
and redirect with an externalRefresh to the download URI. Remember to set
the Content-Type on the target download file page
to be something that the browser can not display, only download.
The example below, shows the possible redirects in use:
examples/redirect.spy
|
[[.import name=redirect]]
<html><body>
[[ type = request['type']
url = request['url']
if url and not type: {
]]
<font color=red><b>
please select a redirect type
</b></font><br>
[[
}
if type and url: {
if type=='internal': redirect.internal(url)
if type=='external': redirect.external(url)
if type=='externalRefresh': redirect.externalRefresh(url, 3)
]] Received POST info: [[=request.post1()]] [[
}
]]
<form action="[[=request.uri('path')]]" method=post>
Redirection url:
<input type=text name=url value=hello.spy><br>
Redirection type:
<table border=0>
<tr><td>
<input type=radio name=type value=internal>
internal
</td></tr>
<tr><td>
<input type=radio name=type value=external>
external
</td></tr>
<tr><td>
<input type=radio name=type value=externalRefresh>
externalRefresh (3 seconds)
</td></tr>
</table>
<input type=submit value=redirect>
</form>
</body></html>
|
Run this code
|
|