首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel删除站点地图生成器中的重复urls

Laravel删除站点地图生成器中的重复urls
EN

Stack Overflow用户
提问于 2021-03-19 18:18:57
回答 1查看 190关注 0票数 0

我有这个GenerateSitemap.php文件,我可以在其中配置爬虫程序,但我不知道如何让爬虫程序删除一些特定的URL,例如(https://example.com/?page=1) (https://example.com/?page=10) (https://example.com/?page=125)。我将spatie in laravel用于此解决方案,并尝试下面的解决方案,但它不起作用

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

回答 1

Stack Overflow用户

发布于 2021-03-19 21:34:29

问题是您使用的是UriInterface的getPath()方法,只有当您的url在路径中包含您要传递的strpos的"?page“时才有效,但是,您希望在url中找到的是查询,因此您应该使用getQuery()而不是getPath(),并且strpos的指针应该类似于"page=”。

代码语言:javascript
复制
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'));
}

当然,如果你有更多的页面,你可以把你想要排除的数字放在一个数组中,然后迭代它的元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66706300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档