前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Php-Laravel输入站点地图(sitemap)

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

作者头像
无道
发布2019-11-13 16:14:02
2.7K0
发布2019-11-13 16:14:02
举报
文章被收录于专栏:无道编程无道编程

前言

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

这里介绍如何在使用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格式语法,其实不嫌麻烦都可以自己写。

代码语言:javascript
复制
<?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>

第一种

安装

代码语言:javascript
复制
composer require tackk/cartographer:1.0.*

使用

代码语言:javascript
复制
<?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
截图-1564918314

第二种

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

For Laravel 5.8

代码语言:javascript
复制
"laravelium/sitemap": "3.1.*"

(development branch)

代码语言:javascript
复制
"laravelium/sitemap": "3.1.x-dev"

For Laravel 5.7

代码语言:javascript
复制
"laravelium/sitemap": "3.0.*"

(development branch)

代码语言:javascript
复制
"laravelium/sitemap": "3.0.x-dev"

For Laravel 5.6

代码语言:javascript
复制
"laravelium/sitemap": "2.8.*"

(development branch)

代码语言:javascript
复制
"laravelium/sitemap": "2.8.x-dev"

For Laravel 5.5

代码语言:javascript
复制
"laravelium/sitemap": "2.7.*"

(development branch)

代码语言:javascript
复制
"laravelium/sitemap": "2.7.x-dev"

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

使用

发布:

代码语言:javascript
复制
php artisan vendor:publish --provider="Laravelium\Sitemap\SitemapServiceProvider"

使用用例:

代码语言:javascript
复制
$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
截图-1564918606
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 基础知识
  • 第一种
    • 效果
    • 第二种
      • 效果
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档