reactjs - Next.js | 有什么方法可以呈现 .xml 文件?
问题描述
我试图在指向www.example.com/sitemap.xml时呈现 XML 文件。由于该项目是使用 Next.js 开发的,因此路由与存储在 pages 目录中的 js 文件一起使用:
- example.com/help -> help.js
- example.com/info -> info.js
那么,有没有办法通过避免访问后端来实现这一点?
解决方案
JS版
/pages/sitemap.xml.jsx
import React from 'react'
class Sitemap extends React.Component {
static async getInitialProps({ res }) {
res.setHeader('Content-Type', 'text/xml')
res.write(`<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
...
</urlset>`)
res.end()
}
}
export default Sitemap
TS版
/pages/sitemap.xml.tsx
import { GetServerSideProps } from 'next'
import React from 'react'
const Sitemap: React.FC = () => null
export const getServerSideProps: GetServerSideProps = async ({ res }) => {
if (res) {
res.setHeader('Content-Type', 'text/xml')
res.write(`<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</urlset>`)
res.end()
}
return {
props: {},
}
}
export default Sitemap
:D
推荐阅读
- sql-server - 如何设置 EF (6) 命令超时,与流式查询交互
- node.js - 哨兵没有向所需邮件抛出错误
- python - Python监控多部分表单上传的进度
- java - java.lang.IllegalStateException: [TextView] 不能为空
- django - 如何更改 Django 管理面板登录表单要求
- autodesk-forge - 访问令牌给出以下错误消息加载资源失败:服务器响应状态为 500
- reactjs - 如何将字符串传递给solidity的setter函数?
- node.js - 如何从 PowerShell 脚本执行 NPM 命令
- amazon-web-services - AWS CloudFront + 单个 S3 存储桶 + xyz.cloudfront.net 上的多个子域
- c# - C# - 设置 HttpClient 标头以将数据发布到 Azure REST API