如何在expressjs

时间:2016-05-12 18:18:53

标签: node.js express sitemap

我从站点地图xml生成器网站下载了我的XML站点地图。我将sitemap.xml放在我的公共目录上,但当我尝试将sitemap.xml提交到谷歌控制台时,我收到以下错误:常规HTTP错误:404未找到 HTTP错误:404
所以我编码了app.get('/sitemap.xml', function( req, res, next ) { res.header('Content-Type', 'text/xml'); res.render( 'sitemap' ); )};

当我导航到' website / sitemap.xml'我收到以下错误:

此页面包含以下错误:

第42行第1行的

错误:属性itemscope的规范授权值

谢谢你的帮助

4 个答案:

答案 0 :(得分:3)

对于那些正在寻找一种在您的代码上动态创建XML的方法,并且不想使用另一个库,也不想在公共文件夹中存储文件的人,可以使用以下方法:

app.get('/sitemap.xml', async function(req, res, next){
  let xml_content = [
    '<?xml version="1.0" encoding="UTF-8"?>',
    '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
    '  <url>',
    '    <loc>http://www.example.com/</loc>',
    '    <lastmod>2005-01-01</lastmod>',
    '  </url>',
    '</urlset>'
  ]
  res.set('Content-Type', 'text/xml')
  res.send(xml_content.join('\n'))
})

答案 1 :(得分:1)

使用https://www.xml-sitemaps.com/之类的工具生成您的sitemap.xml文件

在您的项目中上传sitemap.xml

然后将其添加到您的.js文件:

router.get('/sitemap.xml', function(req, res) {
res.sendFile('YOUR_PATH/sitemap.xml');
});

确保您将sitemap.xml文件的实际路径更改为YOUR_PATH。

答案 2 :(得分:1)

在我的NodeJS Express项目中,无需安装任何库,我就可以使用首选的视图引擎(车把)将其添加到路线中。

export const routes: RouteMapper[] = [
    {
        "/sitemap.xml": [
        {
            method: "get",
            handler: (req, res) =>
            res.sendFile("/src/views/sitemap.xml", { root: "." }),
        },
      ],
    },
];

干杯!

答案 3 :(得分:0)

站点地图不必是XML文档。您只需要一个带有URL的简单文本文件,因此下面的内容就可以正常工作。在下面的示例中,fetchMyUrls()是一种函数/方法,它以字符串数组(URL字符串)的形式异步获取和返回可用的URL。

async function index (req, res){
    return fetchMyUrls().then((urls) => {
      var str = '';
      for (var url of urls) {
        str = str + url + '\n';
      }
      res.type('text/plain');
      return res.send(str);
    });  
}