diff --git a/nuxt.config.ts b/nuxt.config.ts index ec366b7..a59f3fa 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,7 +1,27 @@ export default defineNuxtConfig({ compatibilityDate: '2025-07-15', devtools: {enabled: true}, - modules: ['@nuxt/eslint', '@nuxt/ui', '@nuxt/image'], + modules: ['@nuxt/eslint', '@nuxt/ui', '@nuxt/image', '@nuxtjs/sitemap'], + + // SEO配置 + site: { + url: 'https://ccttiot.com', + name: '创特物联', + description: '创特物联专注于共享经济解决方案的物联网科技公司,致力于通过技术创新推动行业发展。', + defaultLocale: 'zh-CN' + }, + + // Sitemap配置 + sitemap: { + hostname: 'https://ccttiot.com', + gzip: true, + routes: [ + '/', + '/about', + '/sharedSolutions/eBike' + ] + }, + fonts: { providers: { google: false, // 禁用 Google Fonts @@ -9,12 +29,48 @@ export default defineNuxtConfig({ } }, css: ['~/assets/css/main.css'], + + // 预渲染配置 nitro: { prerender: { - routes: [ - '/', - ], + routes: [], crawlLinks: true } }, + + // 应用配置 + app: { + head: { + charset: 'utf-8', + viewport: 'width=device-width, initial-scale=1', + title: '创特物联 - 共享经济解决方案专家', + meta: [ + { + name: 'description', + content: '创特物联专注于共享经济解决方案的物联网科技公司,提供共享电动车、共享汽车、共享充电桩等全方位技术解决方案。' + }, + { + name: 'keywords', + content: '创特物联,共享经济,物联网,共享电动车,共享汽车,共享充电桩,共享解决方案,物联网科技,北京物联网公司' + }, + {name: 'author', content: '创特物联'}, + {name: 'robots', content: 'index, follow'}, + {name: 'language', content: 'zh-CN'}, + {name: 'theme-color', content: '#2563eb'}, + {name: 'msapplication-TileColor', content: '#2563eb'}, + {name: 'application-name', content: '创特物联'}, + {name: 'apple-mobile-web-app-title', content: '创特物联'}, + {name: 'apple-mobile-web-app-capable', content: 'yes'}, + {name: 'apple-mobile-web-app-status-bar-style', content: 'default'}, + {name: 'format-detection', content: 'telephone=no'}, + {name: 'mobile-web-app-capable', content: 'yes'}, + {name: 'msapplication-tap-highlight', content: 'no'} + ], + link: [ + {rel: 'icon', type: 'image/x-icon', href: '/favicon.ico'}, + {rel: 'apple-touch-icon', href: '/apple-touch-icon.png'}, + {rel: 'manifest', href: '/manifest.json'} + ] + } + } }) \ No newline at end of file diff --git a/package.json b/package.json index c89ec8d..71561a2 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@nuxt/eslint": "1.9.0", "@nuxt/image": "1.11.0", "@nuxt/ui": "4.0.0", + "@nuxtjs/sitemap": "^7.4.7", "eslint": "^9.36.0", "nuxt": "^4.1.2", "typescript": "^5.9.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8953719..2cb31f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@nuxt/ui': specifier: 4.0.0 version: 4.0.0(@babel/parser@7.28.4)(change-case@5.4.4)(db0@0.3.2)(embla-carousel@8.6.0)(ioredis@5.8.0)(magicast@0.3.5)(typescript@5.9.2)(vite@7.1.7(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))(vue-router@4.5.1(vue@3.5.22(typescript@5.9.2)))(vue@3.5.22(typescript@5.9.2))(zod@4.1.11) + '@nuxtjs/sitemap': + specifier: ^7.4.7 + version: 7.4.7(h3@1.15.4)(magicast@0.3.5)(vite@7.1.7(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2)) eslint: specifier: ^9.36.0 version: 9.36.0(jiti@2.6.0) @@ -684,6 +687,10 @@ packages: '@nuxtjs/color-mode@3.5.2': resolution: {integrity: sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA==} + '@nuxtjs/sitemap@7.4.7': + resolution: {integrity: sha512-DUhX92lnCJD6tpghUmfmRIsSIoiXMS2SQ2Yd9Tg1+SnZskiKX+DGwLeAeHX8r0/9Pl/bTDpmYhs1snWcCoIkXA==} + engines: {node: '>=18.0.0'} + '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} @@ -1987,6 +1994,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} @@ -2610,6 +2621,10 @@ packages: fast-npm-meta@0.4.7: resolution: {integrity: sha512-aZU3i3eRcSb2NCq8i6N6IlyiTyF6vqAqzBGl2NBF6ngNx/GIqfYbkLDIKZ4z4P0o/RmtsFnVqHwdrSm13o4tnQ==} + fast-xml-parser@5.3.0: + resolution: {integrity: sha512-gkWGshjYcQCF+6qtlrqBqELqNqnt4CxruY6UVAWWnqb3DQ6qaNFEIKqzYep1XzHLM/QtrHVCxyPOtTk4LTQ7Aw==} + hasBin: true + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -2771,6 +2786,11 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + h3-compression@0.3.2: + resolution: {integrity: sha512-B+yCKyDRnO0BXSfjAP4tCXJgJwmnKp3GyH5Yh66mY9KuOCrrGQSPk/gBFG2TgH7OyB/6mvqNZ1X0XNVuy0qRsw==} + peerDependencies: + h3: ^1.6.0 + h3@1.15.4: resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} @@ -3362,6 +3382,14 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nuxt-site-config-kit@3.2.9: + resolution: {integrity: sha512-x8DjW9FnR96LqijcFSbZxae/RwqJ/Wr5ossqfrFDIqRWXO8jD/UX8wNQjXkDYYopHThGqdpxlPUj1FieNL2N8A==} + + nuxt-site-config@3.2.9: + resolution: {integrity: sha512-Li/q3d8q/dGzWJJw9fFzZp7JnGUudKxB03gZojShYnN4lz15r++vL8ET1Vu7/BTDXaW9dhLRE1f60Et0jGk7ew==} + peerDependencies: + h3: ^1 + nuxt@4.1.2: resolution: {integrity: sha512-g5mwszCZT4ZeGJm83nxoZvtvZoAEaY65VDdn7p7UgznePbRaEJJ1KS1OIld4FPVkoDZ8TEVuDNqI9gUn12Exvg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3960,6 +3988,11 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + site-config-stack@3.2.9: + resolution: {integrity: sha512-VHSClGeW2+pMxb3PAVdnbfuFGuan/PYWB+S7wk89ry4XQixu7zDKFRiyMSzoORs0NGXCmGIjU0ePjwNjs9Zn5Q==} + peerDependencies: + vue: ^3 + slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} @@ -4057,6 +4090,9 @@ packages: strip-literal@3.1.0: resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + structured-clone-es@1.0.0: resolution: {integrity: sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ==} @@ -5724,6 +5760,30 @@ snapshots: transitivePeerDependencies: - magicast + '@nuxtjs/sitemap@7.4.7(h3@1.15.4)(magicast@0.3.5)(vite@7.1.7(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))': + dependencies: + '@nuxt/devtools-kit': 2.6.5(magicast@0.3.5)(vite@7.1.7(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@nuxt/kit': 4.1.2(magicast@0.3.5) + chalk: 5.6.2 + defu: 6.1.4 + fast-xml-parser: 5.3.0 + h3-compression: 0.3.2(h3@1.15.4) + nuxt-site-config: 3.2.9(h3@1.15.4)(magicast@0.3.5)(vue@3.5.22(typescript@5.9.2)) + ofetch: 1.4.1 + pathe: 2.0.3 + pkg-types: 2.3.0 + radix3: 1.1.2 + semver: 7.7.2 + sirv: 3.0.2 + std-env: 3.9.0 + ufo: 1.6.1 + ultrahtml: 1.6.0 + transitivePeerDependencies: + - h3 + - magicast + - vite + - vue + '@opentelemetry/api@1.9.0': {} '@oxc-minify/binding-android-arm64@0.87.0': @@ -6867,6 +6927,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + change-case@5.4.4: {} chokidar@3.6.0: @@ -7517,6 +7579,10 @@ snapshots: fast-npm-meta@0.4.7: {} + fast-xml-parser@5.3.0: + dependencies: + strnum: 2.1.1 + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -7682,6 +7748,10 @@ snapshots: dependencies: duplexer: 0.1.2 + h3-compression@0.3.2(h3@1.15.4): + dependencies: + h3: 1.15.4 + h3@1.15.4: dependencies: cookie-es: 1.2.2 @@ -8331,6 +8401,31 @@ snapshots: dependencies: boolbase: 1.0.0 + nuxt-site-config-kit@3.2.9(magicast@0.3.5)(vue@3.5.22(typescript@5.9.2)): + dependencies: + '@nuxt/kit': 4.1.2(magicast@0.3.5) + pkg-types: 2.3.0 + site-config-stack: 3.2.9(vue@3.5.22(typescript@5.9.2)) + std-env: 3.9.0 + ufo: 1.6.1 + transitivePeerDependencies: + - magicast + - vue + + nuxt-site-config@3.2.9(h3@1.15.4)(magicast@0.3.5)(vue@3.5.22(typescript@5.9.2)): + dependencies: + '@nuxt/kit': 4.1.2(magicast@0.3.5) + h3: 1.15.4 + nuxt-site-config-kit: 3.2.9(magicast@0.3.5)(vue@3.5.22(typescript@5.9.2)) + pathe: 2.0.3 + pkg-types: 2.3.0 + sirv: 3.0.2 + site-config-stack: 3.2.9(vue@3.5.22(typescript@5.9.2)) + ufo: 1.6.1 + transitivePeerDependencies: + - magicast + - vue + nuxt@4.1.2(@parcel/watcher@2.5.1)(@vue/compiler-sfc@3.5.22)(db0@0.3.2)(eslint@9.36.0(jiti@2.6.0))(ioredis@5.8.0)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.52.3)(terser@5.44.0)(typescript@5.9.2)(vite@7.1.7(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1): dependencies: '@nuxt/cli': 3.28.0(magicast@0.3.5) @@ -9134,6 +9229,11 @@ snapshots: sisteransi@1.0.5: {} + site-config-stack@3.2.9(vue@3.5.22(typescript@5.9.2)): + dependencies: + ufo: 1.6.1 + vue: 3.5.22(typescript@5.9.2) + slash@5.1.0: {} smob@1.5.0: {} @@ -9219,6 +9319,8 @@ snapshots: dependencies: js-tokens: 9.0.1 + strnum@2.1.1: {} + structured-clone-es@1.0.0: {} stylehacks@7.0.6(postcss@8.5.6): diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..6b24129 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,51 @@ +{ + "name": "创特物联 - 共享经济解决方案专家", + "short_name": "创特物联", + "description": "创特物联专注于共享经济解决方案的物联网科技公司,致力于通过技术创新推动行业发展。", + "start_url": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#2563eb", + "orientation": "portrait-primary", + "lang": "zh-CN", + "dir": "ltr", + "categories": ["business", "productivity", "technology"], + "icons": [ + { + "src": "/favicon.ico", + "sizes": "16x16 32x32", + "type": "image/x-icon" + }, + { + "src": "/apple-touch-icon.png", + "sizes": "180x180", + "type": "image/png" + }, + { + "src": "/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any maskable" + } + ], + "screenshots": [ + { + "src": "/screenshot-wide.png", + "sizes": "1280x720", + "type": "image/png", + "form_factor": "wide" + }, + { + "src": "/screenshot-narrow.png", + "sizes": "720x1280", + "type": "image/png", + "form_factor": "narrow" + } + ] +} diff --git a/public/robots.txt b/public/robots.txt index 0ad279c..6fb719f 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,2 +1,19 @@ -User-Agent: * -Disallow: +User-agent: * +Allow: / + +# 网站地图 +Sitemap: https://ccttiot.com/sitemap.xml + +# 禁止爬取的目录 +Disallow: /admin/ +Disallow: /api/ +Disallow: /_nuxt/ +Disallow: /node_modules/ + +# 允许爬取的重要页面 +Allow: / +Allow: /about +Allow: /sharedSolutions/ + +# 爬取延迟(可选) +Crawl-delay: 1 \ No newline at end of file