Делаем простой редирект-url через Caddy или Nginx

Всем привет!

Многие постоянно задаются вопросом, как быстро и эффективно сделать редирект с одного домена на другой сохранив ссылку.

Есть вариант через специальный index.php файл.
Но зачем усложнять?
Средствами веб-сервера это можно сделать точно также.

Вот пример для Caddy:

r.example.com {
	encode gzip

	# Если передан ?url= → редирект
	@has_url expression `{query.url} != ""`
	handle @has_url {
		redir {query.url} 302
	}

	# Если параметр не передан → сообщение об ошибке
	handle {
		respond "URL не передан." 400
	}
}

Юрл будет вида: https://r.example.com/?url=https://new-url.example.com
И автоматически будет редиректить по целевому пути.
Полезно, если исправляете редирект странц подписок отркрываемых в веб-аппе для добавления на устрйоство подписки.

Для nginx вариация будет примерно такой:

server {
    listen 443 ssl http2;
    server_name r.example.com;

    # ssl_certificate /path/fullchain.pem;
    # ssl_certificate_key /path/privkey.pem;

    default_type text/plain;

    location / {
        if ($arg_url = "") {
            return 400 'URL не передан.';
        }
        return 302 $arg_url;
    }
}

И для nginx не забываем добавить путь до сертификатов.