Dear misc, www,
I would like to announce and introduce <URL:http://mdoc.su/>,
a deterministic URL shortener for BSD manual pages,
written entirely in nginx.conf.
It supports several addressing schemes, for example:
http://mdoc.su/o/pf
http://mdoc.su/o/pf.4
http://mdoc.su/o/4/pf
http://mdoc.su/openbsd/pf
http://mdoc.su/OpenBSD/pf
http://mdoc.su/f/pf
http://mdoc.su/n/pf
http://mdoc.su/d/pf
http://mdoc.su/o/sort.3p
http://mdoc.su/o/intro.4.macppc
http://mdoc.su/openbsd/macppc/4/intro
Source code for the whole mdoc.su.nginx.conf is available at:
https://github.com/cnst/mdoc.su
https://bitbucket.org/cnst/mdoc.su
Specifically, the following currently controls OpenBSD rewriting:
location /OpenBSD { rewrite ^/OpenBSD(/.*)?$ /o$1; }
location /o {
set $ob "http://www.openbsd.org/cgi-bin/man.cgi?query=";
set $os "&sektion=";
rewrite ^/openbsd(/.*)?$ /.$1;
rewrite ^/./([a-z]+[0-9]*[k]?)/([1-9]|3p)/([^/]+)$
$ob$3$os$2&arch=$1 redirect;
rewrite ^/./([^/.]+)/([^/]+)$ $ob$2$os$1
redirect;
rewrite ^/./([^/]+)\.([1-9]|3p)\.([a-z]+[0-9]*[k]?)$
$ob$1$os$2&arch=$3 redirect;
rewrite ^/./([^/]+)\.([1-9]|3p)$ $ob$1$os$2
redirect;
rewrite ^/./([^/]+)$ $ob$1$os
redirect;
rewrite ^/./?$ / last;
return 404;
}
Translation: "/OpenBSD" and "/openbsd" get rewritten to "/o" internally,
without any extra replies to the user, and then the rest of the URI is
analysed, and a "302 Found" redirect is finally issued to the user.
(If you haven't yet noticed nginx in the base tree, here's your chance!)
Pages like http://mdoc.su/o/ redirect to the main "/" page internally,
without affecting the URL that's visible to the user, making it easier
to keep a starting page specifically for one BSD.
Questions, comments and suggestions are welcome.
Available through IPv4 and IPv6.
Enjoy!
Cheers,
Constantine.