Hi tech@,
Changed httpd.conf.5 to be more consistent with IPs used, all documentation IPs
now.
And added a couple of examples. 2 for dyamic pages, cgi and php.
One fairly common used rewrite rule for things like wordpress.
Mischa
Index: httpd.conf.5
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/httpd.conf.5,v
retrieving revision 1.100
diff -u -p -r1.100 httpd.conf.5
--- httpd.conf.5 18 Jun 2018 06:04:25 -0000 1.100
+++ httpd.conf.5 21 Jun 2018 21:55:38 -0000
@@ -97,7 +97,7 @@ Macros are not expanded inside quotes.
.Pp
For example:
.Bd -literal -offset indent
-ext_ip="10.0.0.1"
+ext_ip="203.0.113.1"
server "default" {
listen on $ext_ip port 80
}
@@ -198,6 +198,8 @@ argument can be used with return codes i
.Sq Location:
header for redirection to a specified URI.
.Pp
+It is possible to rewrite the request to redirect it to a different
+external location.
The
.Ar uri
may contain predefined macros that will be expanded at runtime:
@@ -396,10 +398,10 @@ the
using pattern matching instead of shell globbing rules,
see
.Xr patterns 7 .
-The pattern may contain captures that can be used in the
-.Ar uri
-of an enclosed
+The pattern may contain captures that can be used in an enclosed
.Ic block return
+or
+.Ic request rewrite
option.
.It Oo Ic no Oc Ic log Op Ar option
Set the specified logging options.
@@ -462,6 +464,19 @@ in a location.
Configure the options for the request path.
Valid options are:
.Bl -tag -width Ds
+.It Oo Ic no Oc Ic rewrite Ar path
+Enable or disable rewriting of the request.
+Unlike the redirection with
+.Ic block return ,
+this will change the request path internally before
+.Nm httpd
+makes a final decision about the matching location.
+The
+.Ar path
+argument may contain predefined macros that will be expanded at runtime.
+See the
+.Ic block return
+option for the list of supported macros.
.It Ic strip Ar number
Strip
.Ar number
@@ -699,7 +714,7 @@ server "www.b.example.com" {
}
server "intranet.example.com" {
- listen on 10.0.0.1 port 80
+ listen on 192.0.2.1 port 80
root "/htdocs/intranet.example.com"
}
.Ed
@@ -709,12 +724,43 @@ Simple redirections can be configured wi
directive:
.Bd -literal -offset indent
server "example.com" {
- listen on 10.0.0.1 port 80
+ listen on 203.0.113.1 port 80
block return 301 "http://www.example.com$REQUEST_URI"
}
server "www.example.com" {
- listen on 10.0.0.1 port 80
+ listen on 203.0.113.1 port 80
+}
+.Ed
+.Pp
+Serving dynamic pages can be defined with the
+.Ic location
+directive:
+.Bd -literal -offset indent
+server "www.example.com" {
+ listen on * port 80
+ location "/*.cgi*" {
+ fastcgi
+ root "/cgi-bin/"
+ }
+ location "/*.php*" {
+ fastcgi socket "/run/php-fpm.sock"
+ }
+}
+.Ed
+.Pp
+The request can also be rewritten with the
+.Ic request rewrite
+directive:
+.Bd -literal -offset indent
+server "www.example.com" {
+ listen on * port 80
+ location match "/old/(.*)" {
+ request rewrite "/new/%1"
+ }
+ location match "/([%a%d]+)" {
+ request rewrite "/dynamic/index.php?q=%1"
+ }
}
.Ed
.Sh SEE ALSO