Last updated:
0 purchases
pelicannginxaliasmap 2.0.4
nginx_alias_map: A Plugin for Pelican
This Pelican plugin creates an nginx-compatible map between the final page locations
and prior locations, defined in the "Alias" attribute for any article or page.
Loosely based on pelican-alias by Chris Williams,
which itself was inspired by jekyll_alias_generator.
Installation
This plugin can be installed via:
python -m pip install pelican-nginx-alias-map
Usage
Add the directory to the base plugins directory to PLUGIN_PATHS in
pelicanconf.py, and then add nginx_alias_map to the PLUGINS list. For example,
PLUGIN_PATHS = ["plugins"]
PLUGINS = ['nginx_alias_map']
Definable parameters (with defaults in brackets) allow some configuration of the output
of the plugin.
There are two definable parameters, one from Chris's code (ALIAS_DELIMITER), which
defines the delimiter for multiple aliases for the same item; and ALIAS_FILE, which
defines the final name of the output file containing the map; and
ALIAS_DELIMITER : Delimeter between multiple aliases for the same item [","]
ALIAS_FILE : Name of map file to be placed in `output` ['alias_map.txt']
ALIAS_MAP : Name of the map used in the alias file ['redirect_uri']
ALIAS_MAP_TEMP: Name of the map used in the alias file when 2-stage lookup is needed ['redirect_uri_1']
Support for URLs with query strings
In the event that you need to redirect a URI that contains a query string, a separate
map block will be created to map the $request_uri against an re.escaped version of your
alias that contains the ? character. Otherwise, when no query string is present, the
test is made against $uri, which has much more processing done with it (query string
removal, removal of unnecessary '/'s, and so forth).
NGINX configuration
The resulting file (stored in output/$(ALIAS_FILE)) is ready to be included into
your nginx configuration file (in an http stanza). Once the map is created, use the
ALIAS_MAP variable in your processing.
include /opt/web/output/alias_map.txt;
server {
listen *:80 ssl;
server_name example.server;
# Redirection logic
if ( $redirect_uri ) {
return 301 $redirect_uri;
}
location / {
alias /opt/web/output;
}
}
This configuration uses the evil if statement, but it's concise. If you have a better
approach, please create a pull request, and I'll add it to this doc (or replace it if it
makes more sense).
I've chosen to use a 301 redirect here, because I'm confident of the permanency. During
testing, you may want to use a 302.
Contributing
Contributions are welcome and much appreciated. Every little bit helps. You can contribute by improving the documentation, adding missing features, and fixing bugs. You can also help out by reviewing and commenting on existing issues.
To start contributing to this plugin, review the Contributing to Pelican documentation, beginning with the Contributing Code section.
Updating
We use dependabot for updating dependencies, conventional commits for commit messages,
and github actions for release.
To generate a release:
cz bump --dry-run [--increment patch] to verify changes
cz bump [--increment patch] to finalize
git push to send code and git push <tag> to send the tag (or the less-safe --tags)
License
This project is licensed under the MIT license.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.