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

2020-04-17  本文已影响0人  DragonersLi
站点地图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']);
上一篇下一篇

猜你喜欢

热点阅读