Skip to main content

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.

Project description

nginx_alias_map: A Plugin for Pelican

Build Status PyPI Version License

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:

  1. cz bump --dry-run [--increment patch] to verify changes
  2. cz bump [--increment patch] to finalize
  3. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pelican_nginx_alias_map-2.0.4.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

pelican_nginx_alias_map-2.0.4-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file pelican_nginx_alias_map-2.0.4.tar.gz.

File metadata

File hashes

Hashes for pelican_nginx_alias_map-2.0.4.tar.gz
Algorithm Hash digest
SHA256 8c5174fd6a23f6bf49f9ebf6998e16a10a4ce00d85eb32bc0b48f23eb33d2939
MD5 eaf6340f6137ae452d3be7f6b64ae331
BLAKE2b-256 2a261b88658158f497e5f1f741d570893b22027355c652d010ff8f1fc8051603

See more details on using hashes here.

File details

Details for the file pelican_nginx_alias_map-2.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for pelican_nginx_alias_map-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 29622cef9dc630592f0318cc1780108d932fd5a4ae997ae4b0b1bc8886069f87
MD5 34c9e4079fafa88ee8bbf786e6ea56d3
BLAKE2b-256 3f5030d1ced418e53cc2d1014cdf7ef4402170832aba183ed2faf5315351fc8c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page