controller_redirect
Redirect to another url.
This controller redirects a request to another URL. The URL can be a fixed URL, the location of a fixed page id or the name of a dispatch rule.
Example dispatch rule using the redirect controller:
{redir, ["plop"], controller_redirect, [{url, "/newplop"}, {is_permanent, true}]}
This redirects any requests of “/plop” permanently to “/newplop”.
It has the following dispatch options:
Option | Description | Example |
url | The url of the new location the browser is sent to. | {url, “/example”} |
dispatch | Name of a dispatch rule to use for the location url. All arguments (except dispatch and is_permanent) are used as parameters for the dispatch rule. | {dispatch, admin} |
id | Id of the page to redirect to. The controller will redirect to the page_url of this id. The id can be an integer or the name of the page (use an atom or a binary) or the atom user_id for the id of the current user. | {id, 123} |
qargs | A list with querystring arguments to use in the new dispatch rule. Specifies what query (or dispatch) arguments to use from this dispatch rule into the dispatch rule that is being redirected to. | {qargs, [id, slug]} |
is_permanent | Use a permanent (301) or temporary redirect (307). Defaults to false. | {is_permanent, false} |
acl | Perform access control check before redirect. Defaults to no check. | {acl, is_auth} |
This controller does only handle request arguments that are specifically noted in the “qargs” list (and then only when the “dispatch” argument is set).
ACL options
Authorization checks to perform, in addition to the
acl_action
dispatch option, can be given in the acl
dispatch
option, and accepts the following options:
ACL option | Description | Example |
---|---|---|
is_auth |
Disable anonymous access to this resource. | {acl, is_auth} |
logoff |
Log out user before processing the request. | {acl, logoff} |
{Action, Resource} |
Check if user is allowed to perform Action
on Resource . The example is equivalent to
the options {acl_action, edit}, {id,
my_named_page} . |
{acl, {edit, my_named_page}} |
[{Action, Resource}] |
A list of checks to be performed, as above. | {acl, [
{view, secret_page},
{update, 345}
]}
|
ignore |
Don’t perform any access control checks. Be careful to add your own checks in the rendered template and all its included templates. | {acl, ignore} |
Example
A dispatch rule that always redirects /foo/12312/slug to /bar/12312/slug:
{bar, ["bar", id, slug], controller_page, [{template, "bar.tpl"}]},
{bar_redirect, ["foo", id, slug], controller_redirect, [{dispatch, bar}, {qargs, [id,slug]}]}