站点地图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']);
网友评论