前言:
之前有一篇文章利用nuxt3+vue3的项目解决seo问题
在不改动服务器现有配置的情况下,本地将vue代码打包成便于seo的html格式。
此次问题:
发现打包后的文件引用的全是从根目录开始的链接路径,我想将项目放到公司根目录下的‘/guanwang/’下,但他引用的文件不是‘/guanwang/xxxx’的,而是‘/xxxx’路径的。
此次目标:
在不改动服务器现有配置的情况下,本地将vue代码打包成便于seo的html格式,并且修改路径,以完成项目不放在服务器根目录,而是在子目录中正常运行。
修改位置:nuxt.config.ts
export default defineNuxtConfig({
//----------------------------------------------
//这是这次问题的主要修改代码!!!带着其他代码是方便看一下每个参数的层级
app: {
baseURL: '/guanwang/', // 设置基础路径
},
runtimeConfig: {
public: {
apiBase: "/api",
baseURL: '/guanwang/'
},
},
//-----------------------------------------------------------
//下方是使用generate打包的情况下的一些设置,跟这次问题无关
generate: {
// 配置生成的静态文件的路由
routes: [
'/', // 配置需要预渲染的路由
'/about',
'/account',
'/demo',
'/download',
'/support',
'/article'
],
// 配置静态文件生成的文件名
fallback: true, // 在404情况下是否回退到首页
dir: 'dist' // 配置生成的静态文件目录
},
imports: {
dirs: [
// 扫描顶层模块
'composables',
// 扫描嵌套的模块,并且使用特定的名称和后缀的文件
'composables/*/index.{ts,js,mjs,mts}',
// 扫描给定目录内的所有模块
'composables/**'
]
},
devtools: { enabled: true },
css: ["~/assets/css/main.css", "~/assets/css/base.css"],
//--------------------------------------------------------------------------
//下方是用代理解决跨域问题,跟上述问题没有关系,有需要的可以修改后用一下
vite: {
server: {
proxy: {
// 代理配置
'/api': {
target: 'https://www.xxxx.com',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
}
}
}
});
结果:
修改完成之后
1、本地打开将会是形式
2、上传服务器后也可正常使用
3、打包好的文件中,链接路径也成了'/guanwang/xx/xx.js'