Добавьте слэш / в конце каждого маршрута в Nuxt.js - PullRequest
0 голосов
/ 17 сентября 2018

В целях SEO меня попросили добавить косую черту в конце каждого маршрута моего проекта nuxt. Например, myapp.com/company должен быть myapp.com/company/ Существует ли чистый способ сделать это в Nuxt?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Я тоже выполняю требование.Я делаю задачу с помощью следующего метода, который я не знаю, что это правильно.

Два шага:

Nginx переписать URL, то есть добавить косую черту '/' в концеURL, который URL не заканчивается косой чертой.В этом случае запрос http отправляется на веб-сервер.

В другом случае, если запрос (или маршрутизация ссылки) маршрутизируется во внешнем интерфейсе, запрос не отправляет запрос http в Интернет.сервер.Затем добавьте файл промежуточного программного обеспечения с именем addSlash.js следующим образом:

function isThereSlashEnd(path) {
  let isSlash = true
  if (path) {
    let length = path.length
    isSlash = path[length-1] == '/' ? true : false
    console.log('??? path222: ', path, path[length-1], isSlash)
  }
  return isSlash
}
export default function({ req, store, route, redirect }) {

  /**
   * Add slash of '/' at the end of url
   */
  let isSlash = isThereSlashEnd(route.fullPath)
  console.log('??? path111: ', isSlash, route.fullPath, process.client)
  if (!isSlash) {
    if (process.client) {
      window.location.href = route.fullPath + '/'
      console.log('??? path: ', isSlash, route.fullPath, process.client, window.location)
    }
  }
}

Выполнив два шага, выполните задачу.

0 голосов
/ 17 сентября 2018

хорошо, я нашел решение, написав перенаправление в промежуточном программном обеспечении на стороне сервера, поэтому сначала я добавил в nuxt.config.js это:

serverMiddleware: ["~/servermiddleware/seo.js"],

Затем я создал этот файл /servermiddleware/seo.js:

const redirects = require('../301.json');
module.exports = function (req, res, next) {
  const redirect = redirects.find(r => r.from === req.url);
  if (redirect) {
    console.log(`redirect: ${redirect.from} => ${redirect.to}`);
    res.writeHead(301, { Location: redirect.to });
    res.end();
  } else {
    next();
  }
}

и, наконец, я пишу нужные мне перенаправления в 301.json в корневой папке:

[
  { "from": "/company", "to": "/company/" }
]

edit: проблема остается здесь, потому что внутри кода приложения ссылки остаются без косой черты, так что индексация робота будет использовать его .... мне нужно найти лучшее решение.

...