Я хочу спросить о HTTP-to-HTTPS перенаправлениях. Как мы знаем WWW-to-none-WWW перенаправления происходят путем перенаправления со стороны веб-сервера. Но когда дело доходит до перенаправления https, это можно сделать обоими способами: на стороне сервера (Nginx etc...) и на стороне приложения (Middleware). Я хочу знать:
top-level доменов и sub-domain доменов на одном сервере.Спасибо.
Ссылка:






Перенаправление на основе сервера здесь должно быть более производительным, поскольку оно происходит до того, как загрузится какой-либо код приложения.
Лично я всегда делаю это в блоке nginx server{} для всех сайтов. Я создаю файл conf для домена и имею 2 блока server{}, один из которых прослушивает 443 для HTTPS-трафика, а другой — просто распознает (суб)домен и выполняет перенаправление на протокол HTTPS.
Вот пример блока перенаправления server{}, который у меня есть для определенного поддомена:
server {
server_tokens off;
listen 80;
server_name sub.domain.com;
return 301 https://sub.domain.com$request_uri;
}
Что касается плюсов и минусов для серверов, то очевидными я бы назвал:
Пока вы не используете полные пути для маршрутов/активов (изображения/css/js и т. д.), а просто используете пути URI, например; /path/to/something, то, кроме APP_URL, как вы заметили, ничего менять не нужно (я разрабатываю под HTTP, но производство всегда HTTPS). Что касается активов, если вы также указали их (суб)домен, вы можете просто удалить протокол, например: <img src = "//sub.domain.com/some-image.png" alt = ""> Затем будет использоваться текущий протокол (HTTP или HTTPS, независимо от того, как осуществляется доступ к сайту) и загрузить соответственно
Идеально. Я подожду, чтобы проверить, если кто-то еще готов ответить. Если я ничего не получил, ваше будет принято. Большое спасибо за полный ответ.
Теперь этот ответ выглядит более чем идеальным для меня. Спасибо.
Отличный ответ. Но один вопрос; Если я выполняю перенаправление на стороне сервера, нужно ли мне что-либо менять в моем проекте Laravel (игнорируя установленные мной сторонние пакеты), кроме изменения переменной среды
APP_URL? приложение автоматически изменит все мои маршруты и URL-адреса на https?