First of all, let us repeat the warning we already gave: don't use the aliases feature until you're absolutely forced to. For instance, if you're working on a brand new site, you shouldn't need aliases, and if you think you do, chances are you're doing something terribly wrong.
If you decide to continue reading this page, be sure to read the introduction first. Even if you already read it, it might be a good idea to refresh the impression.
Aliases are defined with ini file sections of the aliases group,
e.g.
[aliases main]
The particular section name (main in this example) play no
real role, so you can pick an arbitrary identifier for this purpose. The
only limitation is that in case you need more than one section in the
aliases group (which is highly unlikely), you
must choose distinct names for them.
The aliases as such must be listed in the aliases parameter.
Its value is a text consisting of lines, one alias per line. Every line
must consist of two strings, delimited with a colon “:”, the
first string being the alias, and the second string being the original
path. Both are relative to the site's tree root, and both must
not have a leading “/”. Leading and trailing
whitespace is stripped off; empty (and whitespace-only) lines are ignored;
in the present version all lines that contain no colon are ignored as well,
but this may change one day.
Thalassa does its best to make shortest possible symlinks, but always make them point to relative paths; it also makes directories as necessary. For example, if the following aliases are configured:
[aliases main]
aliases = foo/bar/bur.html : site/node/burbur.html
site/node/abra.html : site/node/cadabra.html
foo/bar/star.html : foo/bur/foobar.html
then Thalassa will try to make directories foo,
foo/bar and site/node (but it looks like it will
only make the foo/bar as the other two are already there),
and the following symlinks will be created: foo/bar/bur.html
(to ../../site/node/burbur.html),
site/node/abra.html (to cadabra.html) and
foo/bar/star.html (to ../bur/foobar.html). Just
like both Unix symlink syscall and link -s
command, Thalassa does not check the target in any way, it just creates the
requested symlinks, even if they become dangling.
In case you've got a lot of aliases, it might be a good idea to place them in a separate file and use smth. like this:
[aliases main] aliases = %[readfile:aliases.lst]
Sometimes aliases may conflict, like this:
[aliases main]
aliases = foo/bar/bur.html : node/a.html
foo/bar : node/b.html
Thalassa does not (at least in the present version) try to solve such
conflicts in any way, it just fails and reports an error; which of the
aliases will fail depends on their order, i.e., in this example Thalassa
will fail to create the foo/bar symlink because there is
already a directory with that name, but if you swap the lines, then
foo/bar/bur.html will fail because foo/bar
already exists and is not a directory.
There is a way to solve such a situation, but the solution must be applied
manually. First of all, use the force_dirs parameter in
the same aliases section to supply Thalassa with names
that must be handled as directories. The parameter's value is a
comma-separated list of paths; leading and trailing whitespace for each
list item is stripped. Every time Thalassa encounters an alias item whose
name (the path to the left of the colon) is included into the
force_dirs list, it makes the corresponding directory instead
of creating a symlink; then, a text file is generated inside such a
directory. The name of the file is set by the dir_file_name
parameter, and the contents for the file is defined by the
dir_file_template parameter, in which, besides all usual
macros, a macro named %target% is supported; it is replaced
with the target path of the alias being handled this way (the path to the
right of the colon). Usually the file is named .htaccess, and
its text consists of the appropriate RewriteRule directive;
refer to the Apache documentation for details.