Mod redirect » History » Revision 30
Revision 29 (gstrauss, 2020-06-01 06:14) → Revision 30/36 (gstrauss, 2020-06-01 06:26)
h1. URL Redirection {{>toc}} *Module: mod_redirect* h2. Description The redirect module is used to specify redirects for a set of URLs. h2. Options h3. url.redirect Redirects a set of URLs externally (more detailed documentation can be found in the [[Docs_ModRewrite#Regular-Expressions|Regular Expression]] Regular Expression section of [[Docs_ModRewrite|mod_rewrite]] doc) e.g. <pre> url.redirect = ( "^/show/([0-9]+)/([0-9]+)$" => "http://www.example.org/show.php?isdn=$1&page$2", "^/get/([0-9]+)/([0-9]+)$" => "http://www.example.org/get.php?isdn=$1&page$2" ) # make an external redirect from any www.host (with www.) to the host (without www.) $HTTP["host"] =~ "^www\.(.*)$" { url.redirect = ("" => "https://%1${url.path}${qsa}") } </pre> Note that the "%1" in the @url.redirect@ target refers to the parenthesized subexpression in the conditional regexp (.*) directly enclosing the @url.redirect@. It *does not* have the meaning that "%1" would have in evhost.path-pattern (where it would mean 'top-level domain'). If @url.redirect@ is specified within a regex conditional (@=~@), % patterns are replaced by the corresponding groups from the condition regex. %1 is replaced with the first subexpression, %2 with the second, etc. %0 is replaced by the entire substring matching the regexp. See above and below for examples using % patterns. A negative match (@!~@) does not save any % patterns. Redirect rules are evaluated up until the first matched redirect rule. As a special case to allow short-circuiting the redirect rules _without_ triggering a redirect, specify a blank target: <code>url.redirect = ( "^/do-not-redirect/this/path" => "" )</code>. Then, a further catch-all redirect rule might redirect everything else. This can be used as an alternative to nested conditions inside other conditions. The blank target special-case is available in version 1.4.40 or later. h3. url.redirect-code (Added in 1.4.31) Defines the http code that is sent with the redirect URL e.g. <pre> url.redirect-code = 302 </pre> h2. Example Some people love the www part in the url. A general solution to move all non www. hosts to its www equivalent: :: <pre> $HTTP["host"] !~ "^www\." { url.redirect = ("" => "https://www.${url.authority}${url.path}${qsa}") } </pre> Moving all subdomains except a few to www.example.org: <pre> $HTTP["host"] !~ "^(www|mail|mysql)\.example\.org$" { url.redirect = ("" => "https://www.example.org${url.path}${qsa}") } </pre> Redirecting any HTTP request to HTTPS aka forcing SSL: [[HowToRedirectHttpToHttps]] (more detailed documentation can be found in the [[Docs_ModRewrite#Regular-Expressions|Regular Expression]] Regular Expression section of [[Docs_ModRewrite|mod_rewrite]] doc)