Делаем 301 редирект на Node.js для Nuxt.js

Статья для тех, кому лень включать мозги и хочется быстро сделать 301 редирект для сайта на Nuxt.js. Код будем писать на Node.js (т.е на JavaScript, просто он будет выполняться на сервере), а подключим его с помощью serverMidleware.

Шаг 1

В папке проекта создаем файл и папку (там где nuxt.config.js): 301.json и serverMiddleware.

шаг 1 создаем нужные файлы и папки

Шаг 2

Содержимое 301.json будет выглядеть как-то так:

содержимое 301.json

Для удобства прикладываю ссылку на Github, там будет лежать код для файлов: 301.json и serverMiddleware/seo.js (мы его в следующем шаге напишем).

На скриншоте я попытался отобразить два возможных сценария перенаправления. Первый - мы перебрасываем пользователя на сторонний сайт. Второй - перебрасываем пользователя на другую страницу внутри нашего сайта. Т.е from это откуда перенаправляем, а to куда.

Шаг 3

Топаем в папку serverMiddleware и внутри нее создаем файл seo.js. Содержимое seo.js будет выглядеть как-то так:

содержимое seo.js

Код доступен по ссылке на Github для скачивания.

Здесь мы подключаем массив из файла 301.json, который лежит в главной папке проекта. Далее Node.js ищет соответствие между актуальным url адресом, на который кто-то зашел (это req.url) и r.from. Последний это адрес, откуда будет происходить перенаправление. Если соответствие между req.url и r.from найдено, происходит перенаправление.

Шаг 4

В главной папке проекта есть файл nuxt.config.js, давайте там подключим нашу новую серверную настройку. Открываем nuxt.config.js и записываем туда такие строки…

На самом верху подключаем модуль:

import serveStatic from 'serve-static'

И далее в теле файла nuxt.config.js подключаем нужный нам файл из папки serverMiddleware:

...
serverMiddleware: [
 '~/serverMiddleware/seo.js'
],
...

Для наглядности примера приложу скриншот из моего проекта.

пример config.nuxt.js

Сохраняем новое содержимое файла и Nuxt.js начинает автоматически пересобирать проект, если в данный момент вы находитесь в режиме разработки (npm run dev).

Если проект уже лежит на хостинге, его нужно пересобрать самим с помощью SSH-команды:

npm run build

Или:

nuxt build

Данную команду нужно вызывать из папки где лежит проект (где nuxt.config.js). После "пересборки" необходимо перезапустить Node.js на хостинге.

перезапуск node.js на хостинге

Пример показан на хостинге Netangels.ru, у вас это может быть совсем по другому!

Спасибо за прочтение, если материал был полезен, поддержи меня доброй мыслью.

Опубликовано: 2020-06-18 10:49