专栏首页无道编程Php-Laravel输入站点地图(sitemap)

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

前言

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

这里介绍如何在使用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文件,访问网址即可显示

效果

第二种

不同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

效果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Tampermonkey 本地开发【使用$.ajax】 http被禁止解决方法

    在本地开发Tampermonkey(油猴)脚本,其中需要和本地服务器交互,但是运行的网站是https,本地服务器是http,请求被谷歌浏览器禁止了。

    无道
  • Laravel的模型事件 入门

    creating, created, updating, updated, saving, saved, deleting, deleted, restorin...

    无道
  • 贪心凑面值

    无道
  • NodeJs生成sitemap站点地图

    如果博客是使用Hexo管理的,sitemap可以使用插件来生成。但对于一个内容管理网站,后端可能是express、koa之类的框架,这时sitemap就需要自己...

    JouyPub
  • 手动生成sitemap

    本来google的插件是很好用的,但无奈我的wordpress主题好像有问题,安装Google XML Sitemaps后,访问sitemap.xml页面会报错...

    尾尾部落
  • 如何更好地美化Django网站的Sitemap站点地图?

    一般在Web网站开发完成之际,如果对搜索引擎优化(SEO)有一定的要求,我们都会为网站添加一个站点地图sitemap,配合robot.txt的使用,以汇总和索引...

    州的先生
  • 人工智能"眼睛",摄像头调试经验笔记

    1.简介2.摄像头模组基本构造与工作原理2.1 基本构造2.1.1 镜头Lens2.1.2 IR Filter红外滤镜2.1.3 Sensor2.2 数据输出2...

    bigmagic
  • CV学习笔记(十二):图像金字塔

    尺度,顾名思义就是说图像的尺寸和分辨率。在我们进行图像处理的时候,会经常对源图像的尺寸进行放大或者缩小的变换,进而转换为我们指定尺寸的目标图像。在对图像进行放大...

    云时之间
  • 推荐系统︱基于bandit的主题冷启动在线学习策略

    除了bandit算法之外,还有一些其他的explore的办法,比如:在推荐时,随机地去掉一些用户历史行为(特征)。

    素质
  • 使用auth_request模块实现nginx端鉴权控制

    使用auth_request模块实现nginx端鉴权控制 nginx-auth-request-module 该模块是nginx一个安装模块,使用配置都比...

    用户1141560

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动