Добавьте слэш / в конце каждого маршрута в Nuxt.js
В целях SEO меня попросили добавить косую черту в конце каждого маршрута моего проекта nuxt. Например, myapp.com/company должно быть myapp.com/company/ Существует ли чистый способ сделать это в Nuxt?
3 ответа
Хорошо, я нашел решение, написав перенаправление в промежуточном программном обеспечении на стороне сервера, поэтому сначала я добавил в 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/" }
]
редактировать: проблема остается здесь, потому что внутри кода приложения ссылки остаются без косой черты, так что индексация робота будет использовать его.... мне нужно найти лучшее решение.
Вы можете установить для trailingSlash значение true в nuxt.config.js, как показано ниже:
router: {
trailingSlash: true
}
Для карты сайта :
sitemap: {
hostname: 'https://www.mywebsite.com',
trailingSlash: true,
},
Подробности на https://dev.to/mornir/nuxt-netlify-and-the-trailing-slash-3gge
Я тоже выполняю требование. Я делаю задачу с помощью следующего метода, который я не знаю, это правильно.
Два шага:
Nginx переписывает 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)
}
}
}
С двумя шагами выше, сделайте задачу.