为了优化 seo,生成 robots.txt 和 sitemap.xml 是必不可少的功能。 Next.js 自身并不提供生成 robots.txt 和 sitemap.xml 的特性,所以需要自己实现。
在 pages/ 目录下创建 sitemap.xml.js。当浏览器访问 http://<your-domain>/sitemap.xml 路径时, Next.js 会调用 sitemap.xml.js 处理请求并响应。 在下面的例子中,我请求后台 api 获取 sitemap 数据,并返回给浏览器。
import react, { Component } from "react";
import fetch from 'isomorphic-unfetch';
export default class SiteMap extends Component {
static async getInitialProps({req, res}) {
if(res) {
const response = await fetch(`http://${req.headers['host']}/api/sitemap`);
const text = await response.text();
res.setHeader("Content-Type", "text/xml");
res.write(text);
res.end();
}
}
}
同样地,在 pages/ 目录下创建 robots.txt 文件。
import React, { Component } from "react";
export default class Robots extends Component {
static getInitialProps({ res }) {
res.setHeader("Content-Type", "text/plain");
res.write(`User-agent: *
Disallow:
Sitemap: https://www.imlc.me/sitemap.xml`);
res.end();
}
}
如果你是以生成静态文件的方式部署你的网站,那么事情就相当简单了。因为生成的静态文件都在 out/ 目录下,你只需要写个简单的脚本生成 robots.txt 和 sitemap.xml,并置于 out/ 目录下。
原文:https://www.imlc.me/p/generate-robots-txt-and-sitemap-xml-in-next-js-zh
让这个代码更加完善,可以同时生成首页、文章、单页面、分类和标签的 sitemap!Linux 定时任务+wget 定时生成 sitemap.xml,具体实现:将 sitemap.php 放到某个不为人知的目录,然后定时使用 wget 去请求这个文件
如果博客是使用Hexo管理的,sitemap可以使用插件来生成。但对于一个内容管理网站,后端可能是express、koa之类的框架,这时sitemap就需要自己来生成了,Sitemap可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页
为了爬虫, 在网站根目录创建robots.txt文件(utf-8),文件内容涉及四类键值对:User-agent,Disallow,Allow,Sitemap,支持正则, Disallow后没内容就是允许所有,sitemap四种写法:
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!