Как сделать что бы самоудаляющая ссылка жила по времени?
Так как стоит тег MySQL предполагаю что ссылки хранятся в базе?
Значит для каждой ссылки нужно сделать колонку со временем создания ссылки и временем первого клика (захода) по ней.
Время создания ссылки можно использовать если надо в принципе ограничить ссылку по времени, независимо от того посещали её или нет.
Время захода по умолчанию null. При открытии ссылки смотрим это значение, при первом заходе заполняем текущую дату, при повторных кликах сравниваем дату и текущее время.
Если прошло больше определённого времени считаем что ссылка удалена.
Так же можно фактически удалять из базы ссылки с истёкшей датой, при этом ссылки где дата посещения null считаем не посещёнными и не удаляем. Это уже зависит от ваших требований.
Создавать ссылки на время? Наверное, не ссылку, а предоставление контента в соответствии со сроком жизни?
Если да, то создаёте токен и время жизни. При запросах проверяете срок. Если срок вышел, то и еррор 404.