Php-Laravel输入站点地图(sitemap)

无道 2019-08-04 0 条评论 编程相关 阅读554 手机阅读

前言

站点地图可以帮助搜索引擎更好的收录我们的站点,所以我们建站、建博客都最好有站点地图。

这里介绍如何在使用PHP建立站点地图(sitemap)。自己从零开始写,是不可能滴啦。

这里介绍两个库:

1、tackk/cartographer【https://packagist.org/packages/tackk/cartographer

2、laravelium/sitemap【https://packagist.org/packages/laravelium/sitemap

第一个是比较老的了,但更接近类库【引用范围更广一点】。但是在Laravel5.8中是无法安装这个库的,提示冲突。

第二个是和Laravel结合在一起的,所以要想在其他地方使用可能有点难度。

基础知识

其实站点地图就是一个xml格式的文档而已,当然它遵循xml格式语法,其实不嫌麻烦都可以自己写。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/sitemap/styles/xml.xsl" type="text/xsl"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
    <url>
    <loc>https://www.misiyu.cn</loc>
        <priority>1.0</priority>
        <lastmod>2019-08-04T19:27:06+08:00</lastmod>
        <changefreq>daily</changefreq>
    </url>
    <url>
    <loc>https://www.misiyu.cn/about.html</loc>
        <priority>0.9</priority>
        <lastmod>2019-08-04T19:27:06+08:00</lastmod>
        <changefreq>monthly</changefreq>
    </url>
    <url>
</urlset>

<!--必填标签--> <url>

​ <!--必填标签,每一条数据都要用<url>和</url>包含在里面 -->

​ <loc>https://www.misiyu.cn</loc>

​ <!--必填,URL链接地址,长度不得超过256字节-->

​ <lastmod>2019-06-23</lastmod>

​ <!--可以不提交该标签,用来指定该链接的最后更新时间-->

​ <changefreq>daily</changefreq>

​ <!--可以不提交该标签,用这个标签告诉此链接可能会出现的更新频率:always ,hourly ,daily ,weekly ,monthly ,yearly ,never -->

​ <priority>0.8</priority>

​ <!--可以不提交该标签,用来指定此链接相对于其他链接的优先权比值,此值定于0.0-1.0之间-->

</url>

第一种

安装

composer require tackk/cartographer:1.0.*

使用

<?php
require 'vendor/autoload.php';

use Tackk\Cartographer\Sitemap;
use Tackk\Cartographer\ChangeFrequency;


$sitemap = new Sitemap();
$sitemap->add('https://www.misiyu.cn', date("Y-m-d"), ChangeFrequency::WEEKLY, 1.0);


header('Content-Type:text/xml');
echo $sitemap->toString();

建立文件,引入composer autoload文件,访问网址即可显示

效果

截图-1564918314

第二种

不同laravel版本,需要安装不同的该库版本:

For Laravel 5.8

"laravelium/sitemap": "3.1.*"

(development branch)

"laravelium/sitemap": "3.1.x-dev"

For Laravel 5.7

"laravelium/sitemap": "3.0.*"

(development branch)

"laravelium/sitemap": "3.0.x-dev"

For Laravel 5.6

"laravelium/sitemap": "2.8.*"

(development branch)

"laravelium/sitemap": "2.8.x-dev"

For Laravel 5.5

"laravelium/sitemap": "2.7.*"

(development branch)

"laravelium/sitemap": "2.7.x-dev"

具体请看:https://packagist.org/packages/laravelium/sitemap

使用

发布:

php artisan vendor:publish --provider="Laravelium\Sitemap\SitemapServiceProvider"

使用用例:

$sitemap = App::make('sitemap');
$sitemap->setCache('laravel.sitemap', 60);
// check if there is cached sitemap and build new only if is not
if (!$sitemap->isCached()) {
    // add item to the sitemap (url, date, priority, freq)
    $sitemap->add(route('index'), date("c"), '1.0', 'daily');
    $sitemap->add(route('about'), date("c"), '0.9', 'monthly');
    $sitemap->add(route('says'), date("c"), '0.8', 'weekly');
    $sitemap->add(route('note_list'), date("c"), '0.8', 'weekly');
    $sitemap->add(route('snippet'), date("c"), '0.8', 'weekly');
    // for all articles/posts
    $articles = Article::orderBy('updated_at', 'desc')->get(['id', 'updated_at']);
    // add every post to the sitemap
    foreach ($articles as $article) {
        $sitemap->add(route('read', $article->id), date("c", strtotime($article->updated_at)), 0.8, 'monthly');
    }
}

// show your sitemap (options: 'xml' (default), 'html', 'txt', 'ror-rss', 'ror-rdf')
return $sitemap->render('xml');

具体更多用法请看官方文档:https://gitlab.com/Laravelium/Sitemap/wikis/Dynamic-sitemap

效果

截图-1564918606

全文完 [
有帮助?打赏
支付宝打赏
微信打赏
]
修改: 2019-08-06 08:27
这篇文章还没有评论呢~
点击刷新/生成验证码
It's me
昵称:无道
坐标:成都
性别:
一个人,一介学生,一个儿子~ 愿你我都被世界温暖以待
迷思爱 公众号

新建了个公众号,会不定期分享一些小玩意,有提升效率的办公软件、有一些黑科技的软件、或教程等等。

爷~,要不关注下~~