7.8 KiB
7.8 KiB
SEO 静态页面集成指南
本文档说明如何将 SEO 静态页面生成器集成到天远查项目中。
快速开始
1. 生成静态页面
在项目根目录运行:
# Windows PowerShell
node scripts\seo-static-generator\generateStaticPages.js
# 或者使用 cmd
node scripts\seo-static-generator\generateStaticPages.js
这将生成所有 SEO 优化的静态页面到 scripts/seo-static-generator/static-pages/ 目录。
2. 生成服务器配置
# 生成 Nginx 配置
node scripts\seo-static-generator\generateNginxConfig.js
这将生成:
scripts/seo-static-generator/nginx.conf- Nginx 配置文件scripts/seo-static-generator/.htaccess- Apache 配置文件
3. 集成到构建流程
更新 package.json,添加以下脚本:
{
"scripts": {
"dev": "vite",
"build": "vite build",
"build:seo": "node scripts/seo-static-generator/generateStaticPages.js",
"build:all": "npm run build && npm run build:seo",
"config:nginx": "node scripts/seo-static-generator/generateNginxConfig.js"
}
}
现在可以使用:
# 构建项目并生成 SEO 页面
npm run build:all
# 只生成 SEO 页面
npm run build:seo
# 生成 Nginx 配置
npm run config:nginx
部署步骤
开发环境测试
- 生成静态页面
npm run build:seo
- 在浏览器中打开测试
# 在浏览器中打开示例页面
start scripts\seo-static-generator\index.html
生产环境部署
使用 Nginx(推荐)
- 构建项目
npm run build:all
- 生成 Nginx 配置
npm run config:nginx
- 上传文件到服务器
# 上传 SPA 构建文件
scp -r dist/* user@server:/var/www/tyc-webview-v2/dist/
# 上传 SEO 静态页面
scp -r scripts/seo-static-generator/static-pages/* user@server:/var/www/tyc-webview-v2/static-pages/
# 上传 Nginx 配置
scp scripts/seo-static-generator/nginx.conf user@server:/etc/nginx/sites-available/tyc-webview
- 配置 Nginx
# 在服务器上执行
# 创建软链接
sudo ln -s /etc/nginx/sites-available/tyc-webview /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重载 Nginx
sudo nginx -s reload
使用 Apache
- 构建项目
npm run build:all
- 生成 Apache 配置
生成的 .htaccess 文件在 scripts/seo-static-generator/.htaccess
- 上传文件到服务器
# 上传 SPA 构建文件
scp -r dist/* user@server:/var/www/tyc-webview-v2/
# 上传 SEO 静态页面
scp -r scripts/seo-static-generator/static-pages/* user@server:/var/www/tyc-webview-v2/static-pages/
# 上传 .htaccess
scp scripts/seo-static-generator/.htaccess user@server:/var/www/tyc-webview-v2/
- 确保 Apache 启用了 mod_rewrite
# 在服务器上执行
sudo a2enmod rewrite
sudo systemctl restart apache2
配置说明
修改服务器配置
Nginx 配置
编辑 scripts/seo-static-generator/generateNginxConfig.js:
const config = {
serverName: 'www.tianyuancha.cn', // 修改为你的域名
spaRoot: '/var/www/tyc-webview-v2/dist', // SPA 静态文件目录
staticRoot: '/var/www/tyc-webview-v2/static-pages', // SEO 静态页面目录
sslEnabled: false, // 是否启用 HTTPS
sslCertPath: '/etc/nginx/ssl/cert.pem', // SSL 证书路径
sslKeyPath: '/etc/nginx/ssl/key.pem' // SSL 密钥路径
};
Apache 配置
Apache 使用 .htaccess 文件,无需额外配置,确保:
static-pages/目录与网站根目录同级- Apache 启用了
mod_rewrite模块
修改 SEO 配置
SEO 配置在 scripts/seo-static-generator/generateStaticPages.js 中:
const seoConfigs = {
'/': {
title: '天远查官网_企业与婚姻关联风险核验_综合履约背景核验',
description: '天远查官网(TianYuanCha)聚合官方公示数据...',
keywords: '天远查,婚姻状态风险, 配偶背景核验...'
},
// ... 添加更多路由
};
测试验证
1. 测试爬虫检测
使用 curl 模拟爬虫访问:
# 模拟百度爬虫(应该返回静态页面)
curl -A "Baiduspider" http://www.tianyuancha.cn/
# 模拟 Google 爬虫(应该返回静态页面)
curl -A "Googlebot" http://www.tianyuancha.cn/
# 正常浏览器访问(应该返回 SPA)
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" http://www.tianyuancha.cn/
2. 验证 SEO
使用在线工具验证:
- Google Rich Results Test: https://search.google.com/test/rich-results
- 百度移动适配测试: http://ziyuan.baidu.com/
- Schema Markup Validator: https://validator.schema.org/
3. 检查生成的文件
# 检查静态页面目录
ls -la scripts/seo-static-generator/static-pages/
# 检查 sitemap.xml
cat scripts/seo-static-generator/static-pages/sitemap.xml
# 检查 robots.txt
cat scripts/seo-static-generator/static-pages/robots.txt
维护和更新
更新 SEO 配置
-
修改
scripts/seo-static-generator/generateStaticPages.js中的seoConfigs -
重新生成静态页面:
npm run build:seo
- 部署到服务器:
# 上传更新的静态页面
scp -r scripts/seo-static-generator/static-pages/* user@server:/var/www/tyc-webview-v2/static-pages/
添加新路由
- 在
scripts/seo-static-generator/generateStaticPages.js中添加路由:
const seoConfigs = {
// ... 现有路由
'/new-route': {
title: '新页面标题',
description: '新页面描述',
keywords: '关键词1,关键词2'
}
};
- 在
scripts/seo-static-generator/pageTemplates.js中添加内容生成函数:
function generateNewRouteContent(seoConfig) {
return `
<h2>新页面内容</h2>
<p>这里写页面的具体内容...</p>
`;
}
// 添加到路由映射
export function generateContentByRoute(path, seoConfig) {
const routeContentMap = {
// ... 现有路由
'/new-route': generateNewRouteContent(seoConfig),
};
return routeContentMap[path] || generateDefaultContent(seoConfig);
}
- 重新生成静态页面:
npm run build:seo
集成到 CI/CD
在 CI/CD 流程中添加静态页面生成:
# .github/workflows/deploy.yml 示例
name: Deploy
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '18'
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build:all
- name: Deploy to server
run: |
scp -r dist/* user@server:/var/www/tyc-webview-v2/dist/
scp -r scripts/seo-static-generator/static-pages/* user@server:/var/www/tyc-webview-v2/static-pages/
常见问题
Q: 静态页面没有生成?
A: 检查以下几点:
- 确保 Node.js 版本 >= 14
- 检查是否有文件写入权限
- 查看控制台错误信息
Q: Nginx 配置不生效?
A: 检查以下几点:
- 确保 Nginx 已重启:
sudo nginx -s reload - 检查配置文件语法:
sudo nginx -t - 查看 Nginx 错误日志:
sudo tail -f /var/log/nginx/error.log - 确保静态文件路径正确
Q: 如何处理动态内容?
A: 对于需要动态内容的页面,可以考虑:
- 使用定时任务定期重新生成静态页面
- 在静态页面中添加 JavaScript,让正常用户访问时加载动态内容
- 考虑使用动态渲染服务(方案三)
Q: 爬虫仍然看到的是 SPA?
A: 检查以下几点:
- 确认 User-Agent 匹配规则正确
- 检查 Nginx/Apache 配置是否正确加载
- 使用 curl 测试爬虫访问
技术支持
如有问题,请参考详细文档:scripts/seo-static-generator/README.md