Nuxt 网站未被抓取
Nuxt Sites not getting crawled
我用NUXT做了一个需要SEO的网站
当我用www.xml-sitemaps.com网站看能不能找到我所有的页面时,只找到首页,其他路由none。当我尝试其他 NUXT 演示网站时,它都能找到它们。
我的 robots.txt
文件如下所示:
User-agent: *
Disallow: /profile/
Sitemap: https://www.example.com/sitemap.xml
我正在使用 @nuxtjs/sitemap
生成最终看起来像这样的 sitemap.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url> <loc>https://www.example.com/about</loc> </url>
<url> <loc>https://www.example.com/</loc> </url>
</urlset>
如果这有帮助,我的 nuxt.config.js
看起来像:
module.exports = {
/*
** Headers of the page
*/
head: {
title: 'Title',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: 'Title' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
},
mode: 'spa',
loading: { color: '#3B8070' },
build: {
/*
** Run ESLint on save
*/
extend (config, { isDev, isClient }) {
if (isDev && isClient) {
config.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /(node_modules)/
})
}
}
},
css: [
'~/assets/main.css'
],
modules: [
'@nuxtjs/pwa',
[
'@nuxtjs/sitemap', {
generate: true,
hostname: 'https://www.example.com',
exclude: [
'/profile'
]
}
]
],
plugins: [
'~/plugins/uikit.js',
'~/plugins/fireauth.js'
],
manifest: {
name: 'Title',
lang: 'en'
},
router: {
middleware: 'router-auth'
},
vendor: [
'firebase',
'uikit'
]
}
我是 nuxt 站点地图模块的创建者。
您的站点地图模块配置设置在错误的部分。
请更新您的 nuxt.config.js
:
modules: ['@nuxtjs/pwa', '@nuxtjs/sitemap'],
sitemap: {
generate: true,
hostname: 'https://www.example.com',
exclude: [
'/profile'
]
},
plugins: [
然后运行npm run generate
.
最后在 \dist\
文件夹中检查您生成的 sitemap.xml
。
(如果您有其他问题或问题,您可以在 github 项目上提出问题:https://github.com/nuxt-community/sitemap-module/issues)
由于您处于 SPA 模式,因此您不会在 SEO 方面取得很大成功,如果您可以 运行 在 universal
模式下,那么您将看到 nuxt/vue 的全部好处。
参见 this 我在通用模式下使用 Nuxt 做的网站。
了解不同 Nuxt.js 模式的情况很重要。阅读 Nuxt.js 指南中的 explanation about server side rendering,其中解释了框架可以配置为工作的三种模式之间的区别:
- 通用(使用服务器端呈现,因此当呈现任何页面时,该页面将与所有呈现的 HTML 一起提供(SEO 和爬虫友好模式)
- SPA(单页应用程序)将与 css 和 javascript 捆绑一起提供 HTML 骨架,它们只会被拆分以创建初始 DOM 在浏览器中。对 Intranet 应用程序很酷,对 SEO 不利。
- 静态生成所有页面 (pre-rendering),以便网站可以在任何共享主机中提供,就像简单 HTML。
概念清楚后,您可以尝试将 Nuxt.js 配置文件中的 "mode" 属性 从 "SPA" 更改为 "Universal",同时关于同一 nuxt.config.js 文件中 xml 站点地图配置的另一个建议。
此外,您可以尝试并了解不同的配置,方法是:
- 安装指南中讨论的Nuxt.js starter template。
- 类似 Create Nuxt App 的东西,通过
npm install -g create-nuxt-app
安装后,您可以看到自动为您设置了多少种不同的配置。
我用NUXT做了一个需要SEO的网站
当我用www.xml-sitemaps.com网站看能不能找到我所有的页面时,只找到首页,其他路由none。当我尝试其他 NUXT 演示网站时,它都能找到它们。
我的 robots.txt
文件如下所示:
User-agent: *
Disallow: /profile/
Sitemap: https://www.example.com/sitemap.xml
我正在使用 @nuxtjs/sitemap
生成最终看起来像这样的 sitemap.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url> <loc>https://www.example.com/about</loc> </url>
<url> <loc>https://www.example.com/</loc> </url>
</urlset>
如果这有帮助,我的 nuxt.config.js
看起来像:
module.exports = {
/*
** Headers of the page
*/
head: {
title: 'Title',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: 'Title' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
},
mode: 'spa',
loading: { color: '#3B8070' },
build: {
/*
** Run ESLint on save
*/
extend (config, { isDev, isClient }) {
if (isDev && isClient) {
config.module.rules.push({
enforce: 'pre',
test: /\.(js|vue)$/,
loader: 'eslint-loader',
exclude: /(node_modules)/
})
}
}
},
css: [
'~/assets/main.css'
],
modules: [
'@nuxtjs/pwa',
[
'@nuxtjs/sitemap', {
generate: true,
hostname: 'https://www.example.com',
exclude: [
'/profile'
]
}
]
],
plugins: [
'~/plugins/uikit.js',
'~/plugins/fireauth.js'
],
manifest: {
name: 'Title',
lang: 'en'
},
router: {
middleware: 'router-auth'
},
vendor: [
'firebase',
'uikit'
]
}
我是 nuxt 站点地图模块的创建者。
您的站点地图模块配置设置在错误的部分。
请更新您的 nuxt.config.js
:
modules: ['@nuxtjs/pwa', '@nuxtjs/sitemap'],
sitemap: {
generate: true,
hostname: 'https://www.example.com',
exclude: [
'/profile'
]
},
plugins: [
然后运行npm run generate
.
最后在 \dist\
文件夹中检查您生成的 sitemap.xml
。
(如果您有其他问题或问题,您可以在 github 项目上提出问题:https://github.com/nuxt-community/sitemap-module/issues)
由于您处于 SPA 模式,因此您不会在 SEO 方面取得很大成功,如果您可以 运行 在 universal
模式下,那么您将看到 nuxt/vue 的全部好处。
参见 this 我在通用模式下使用 Nuxt 做的网站。
了解不同 Nuxt.js 模式的情况很重要。阅读 Nuxt.js 指南中的 explanation about server side rendering,其中解释了框架可以配置为工作的三种模式之间的区别:
- 通用(使用服务器端呈现,因此当呈现任何页面时,该页面将与所有呈现的 HTML 一起提供(SEO 和爬虫友好模式)
- SPA(单页应用程序)将与 css 和 javascript 捆绑一起提供 HTML 骨架,它们只会被拆分以创建初始 DOM 在浏览器中。对 Intranet 应用程序很酷,对 SEO 不利。
- 静态生成所有页面 (pre-rendering),以便网站可以在任何共享主机中提供,就像简单 HTML。
概念清楚后,您可以尝试将 Nuxt.js 配置文件中的 "mode" 属性 从 "SPA" 更改为 "Universal",同时关于同一 nuxt.config.js 文件中 xml 站点地图配置的另一个建议。
此外,您可以尝试并了解不同的配置,方法是:
- 安装指南中讨论的Nuxt.js starter template。
- 类似 Create Nuxt App 的东西,通过
npm install -g create-nuxt-app
安装后,您可以看到自动为您设置了多少种不同的配置。