fork/craft-here

Use the SEO plugin redirects to write nginx and apache redirect map config files (perfect for headless Craft CMS Setups)

2.0.1 2023-07-13 12:52 UTC

This package is auto-updated.

Last update: 2024-04-13 14:40:00 UTC


README

68747470733a2f2f6769746875622e666f726b2e64652f43726166745f486552655f3230313232332e737667

Table of contents

Features

  • Manage custom redirects directly within the server configuration (for Nginx and Apache)
  • Perfectly suited for headless Craft CMS Setups
  • Use the redirects features and UI of the Craft SEO Plugin

Requirements

Setup

1. Install

Install the package

cd /path/to/project
composer require fork/craft-here

2. Configuration file

  • Copy the example config.php to your Craft config directory and rename it to redirects.php
  • Specify the server type (and a reload command if you use nginx). Here's an example:
<?php

return [
    // Global settings
    '*' => [
        'serverType' => 'nginx' // or 'apache'
    ],

    // Dev environment settings
    'dev' => [
        //'redirectsReloadCommand' => 'my-command',
    ],

    // Staging environment settings
    'staging' => [
    ],

    // Production environment settings
    'production' => [
        //'redirectsReloadCommand' => 'sudo /etc/init.d/nginx reload',
    ],
];

In your server configuration include the redirect map files (which will be created after plugin has been installed):

# NGINX EXAMPLE:

# see https://serverfault.com/a/890715/487169 for why we use "[.]" instead of a regular period "."
include /var/www/html/redirects/my.domain.com/redirects-301[.]map;
include /var/www/html/redirects/my.domain.com/redirects-302[.]map;

# 301 MOVED PERMANENTLY
if ($redirect_moved = false) {
    set $redirect_moved "";
}
if ($redirect_moved != "") {
    rewrite ^(.*)$ $redirect_moved permanent;
}
# 302 FOUND (aka MOVED TEMPORARILY)
if ($redirect_found = false) {
    set $redirect_found "";
}
if ($redirect_found != "") {
    rewrite ^(.*)$ $redirect_found redirect;
}
# APACHE EXAMPLE:

RewriteEngine On
RewriteMap redirects-301 txt:/var/www/html/redirects/my.domain.com/redirects-301.map
RewriteMap redirects-302 txt:/var/www/html/redirects/my.domain.com/redirects-302.map

RewriteCond ${redirects-301:%{REQUEST_URI}} ^.+$
RewriteRule .* https://${redirects-301:%{HTTP_HOST}%{REQUEST_URI}} [redirect=permanent,last]

RewriteCond ${redirects-302:%{REQUEST_URI}} ^.+$
RewriteRule .* https://${redirects-302:%{HTTP_HOST}%{REQUEST_URI}} [redirect=temp,last]

Usage

Once the plugin has been installed it will create all necessary redirect map files which need to be included into the server config. After that just use the SEO Plugin UI to manage your redirects.

Roadmap

  • Settings maybe (instead of config file)
Fork Logo

Brought to you by Fork Unstable Media GmbH