美文网首页
laravel下配置站点地图sitemap笔记!

laravel下配置站点地图sitemap笔记!

作者: DragonersLi | 来源:发表于2020-04-17 11:45 被阅读0次
    站点地图sitemap是提升SEO重要部分,laravel中使用laravelium/site包配置,文档地址:https://gitlab.com/Laravelium/Sitemap
    [root@launch-advisor-20190916 seavisa]# php artisan -V #查看laravel版本
    Laravel Framework 5.8.29 #找到对应laravel版本的包安装
    
    
    1.直接composer引入"laravelium/sitemap": "3.1.x-dev"或者
    2.更新composer.json追加"laravelium/sitemap":"3.1.*",然后执行:composer update laravelium/sitemap
    image.png
    安装报错The Process class relies on proc_open, which is not available on your PHP installation.意思是安装依赖于proc_open这个函数,但是php.ini中已经禁止了,删除这个函数就可以了。
    发布配置:php artisan vendor:publish --provider="Laravelium\Sitemap\SitemapServiceProvider"生成如下文件:
    /config/sitemap.php
    /resources/views/vendor/sitemap
    /public/vendor/sitemap
    
    手动或者使用命令php artisan make:controller SitemapController创建控制器
    <?php
    
    namespace App\Http\Controllers\Web;
    
    use Illuminate\Support\Facades\App;
    use App\Http\Controllers\BaseController;
    use Illuminate\Http\Request;
    use App\Models\{YmNews,YmProject,YmCountry};
    class SitemapController extends BaseController
    {
        public function __construct()
        { 
            parent::__construct(); 
    
        }
        public function index(Request $request) { 
            $url = [
            url('/'),
            url('project'),
            url('news'),
            url('country'),
            url('oversea/house'),
            url('expert'),
            url('pinggu'),
            url('aboutus'),
            
            ];
            
            $sitemap_contents = App::make("sitemap");// 创建一个生成站点地图的对象
            
            $sitemap_contents->setCache('laravel.sitemap_contents', 3600);// 设置缓存
           
            $blogs = YmNews::all();        
            foreach ($blogs as $blog)
            {   
                $url[] = url('news/info/'.$blog->id); 
            }
            
            $projects = YmProject::all();        
            foreach ($projects as $project)
            {   
                $url[] = url('yimin/'.$project->title_en);
            }
            
            $countrys = YmCountry::all();
            foreach ($countrys as $country)
            {   
                $url[] = url('project/'.$country->id);
            } 
                
            $dateTime = date('Y-m-d H:i:s');
            foreach($url as $k=>$v){
                $sitemap_contents->add($v, $dateTime,'1.0','daily');
            }
            // 渲染站点地图(options: 'xml' (default), 'html', 'txt', 'ror-rss', 'ror-rdf')
            return $sitemap_contents->render('xml');
        }
     
    
     
    }
    
    
    
    添加路由:Route::get('sitemap', ['uses' => 'SitemapController@index', 'as' => 'sitemap']);
    浏览器访问效果:
    image.png
    具体使用方法参考文档:https://gitlab.com/Laravelium/Sitemap/-/wikis/Dynamic-sitemap
    百度小程序提交不识别:
    image.png
    解决方法更改路由,让原链接https://m.seavisa.cn/sitemap变更为https://m.seavisa.cn/sitemap.xml
    #原路由
        Route::get('sitemap', ['uses' => 'SitemapController@index',     'as' => 'sitemap']);
    #更改后的路由 
        Route::get('sitemap.xml', ['uses' => 'SitemapController@index',     'as' => 'sitemap.xml']);
    

    相关文章

      网友评论

          本文标题:laravel下配置站点地图sitemap笔记!

          本文链接:https://www.haomeiwen.com/subject/osvprxtx.html