繁体   English   中英

Laravel 删除站点地图生成器中的重复网址

[英]Laravel remove duplicates urls in sitemap generator

我有这个 GenerateSitemap.php 文件,我可以在其中配置爬虫,但我不明白应该如何让爬虫删除一些特定的 URL,例如( https://example.com/?page=1 )( Z5E056C500A1C /example.com/?page=10)(https://example.com/?page=125 我在 laravel 中使用 spatie 作为此解决方案并尝试以下解决方案,但它没有用

public function sitemap()
    {   
        SitemapGenerator::create('https://example.com')
   ->shouldCrawl(function (UriInterface $url) {
       return strpos($url->getPath(), '?page') === false;
   })
   ->writeToFile(public_path('sitemap.xml'));
}

问题是您正在使用 UriInterface 的 getPath() 方法,这仅在您的 url 在路径中有您在 strpos 中传递的“?page”时才有效,但是,您想在 url 中找到的是查询所以你应该使用 getQuery() 而不是 getPath() 并且 strpos 的指针应该像“page =”。

public function sitemap(){   
    SitemapGenerator::create('https://example.com')
         ->shouldCrawl(function (UriInterface $url) {
                           return strpos($url->getQuery(), 'page=1') === false && 
                                  strpos($url->getQuery(), 'page=10') === false && 
                                  strpos($url->getQuery(), 'page=125') === false ;
                       })->writeToFile(public_path('sitemap.xml'));
}

当然,如果您有更多页面,您可以将要排除的数字放入数组中并迭代其元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM