首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WordPress 免插件生成最安全的纯静态站点地图(sitemap.xml)

WordPress 免插件生成最安全的纯静态站点地图(sitemap.xml)

作者头像
叮当叮
发布于 2020-04-20 08:28:32
发布于 2020-04-20 08:28:32
1.3K00
代码可运行
举报
文章被收录于专栏:酷猫小窝酷猫小窝
运行总次数:0
代码可运行

之前酷猫一直使用的是插件生成站点地图的方法,但是用来用去还是各种的不舒服,想了想还是免插件生成最好了,安全还高效!

站点地图(sitemap.xml)就是方便快捷的给搜索引擎蜘蛛指明道路的一个方式

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 1000;
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'
?>
<!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Diy By 张戈博客(http://zhangge.net)-->
  <url>
      <loc><?php echo get_home_url(); ?></loc>
      <lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>
      <changefreq>daily</changefreq>
      <priority>1.0</priority>
  </url>
<?php
/* 文章页面 */
$myposts = get_posts( "numberposts=" . $posts_to_show );
foreach( $myposts as $post ) { ?>
  <url>
      <loc><?php the_permalink(); ?></loc>
      <lastmod><?php the_time('c') ?></lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.6</priority>
  </url>
<?php } /* 文章循环结束 */ ?>
<?php
/* 单页面 */
$mypages = get_pages();
if(count($mypages) > 0) {
    foreach($mypages as $page) { ?>
    <url>
      <loc><?php echo get_page_link($page->ID); ?></loc>
      <lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?>+00:00</lastmod>
      <changefreq>weekly</changefreq>
      <priority>0.6</priority>
  </url>
<?php }} /* 单页面循环结束 */ ?>
<?php
/* 博客分类 */
$terms = get_terms('category', 'orderby=name&hide_empty=0' );
$count = count($terms);
if($count > 0){
foreach ($terms as $term) { ?>
    <url>
      <loc><?php echo get_term_link($term, $term->slug); ?></loc>
      <changefreq>weekly</changefreq>
      <priority>0.8</priority>
  </url>
<?php }} /* 分类循环结束 */?>
<?php
 /* 标签(可选) */
$tags = get_terms("post_tag");
foreach ( $tags as $key => $tag ) {
    $link = get_term_link( intval($tag->term_id), "post_tag" );
         if ( is_wp_error( $link ) )
          return false;
          $tags[ $key ]->link = $link;
?>
 <url>
      <loc><?php echo $link ?></loc>
      <changefreq>monthly</changefreq>
      <priority>0.4</priority>
  </url>
<?php  } /* 标签循环结束 */ ?>
</urlset>

代码无需做出更改,至于版权信息呢,各位随意。

代码保存为 sitemap.php 文件(UTF-8 编码),上传到网站根目录,然后访问这个文件的链接即可实时的生成站点地图(sitemap.xml)

但是,这样生成的站点地图(sitemap.xml)其实就是“动态”的,这点儿对于服务器的性能还是会有小小的影响的,所以我们还要设置静态或者是伪静态。

伪静态

Nginx:

编辑已存在的Nginx伪静态规则,新增如下规则后(平滑)重启nginx即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rewrite ^/sitemap.xml$ /sitemap.php last;
Apache

编辑网站根目录的 .htaccess ,加入如下规则:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteRule ^(sitemap)\.xml$ $1.php

做好伪静态规则后,就可以直接访问sitemap.xml看看效果了,比如

纯静态

看到很多朋友已经在问这个sitemap如何静态化,加快打开速度。毕竟每次重新生成绝对是一个耗能大户,而且还有可能被有心之人拿来作为攻击入口!

在这里,我就分享一个自己一直在用的最简单的实现方法:Linux定时任务+wget定时生成sitemap.xml

具体实现:将sitemap.php放到某个不为人知的目录,然后定时使用wget去请求这个文件,并将数据保存为sitemap.xml存放到网站根目录就可以了!比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#每天在网站根目录生成一个sitemap.xml diypath为sitemap.php的实际位置
0 1 * * * wget -O /home/wwwroot/www.kucats.com/sitemap.xml https://kucats.com/diypath/sitemap.php  >/dev/null 2>&1

如果是启用了https的站点,需要加入 –no-check-certificate  的选项,即:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#每天在网站根目录生成一个sitemap.xml diypath为sitemap.php的实际位置(针对https网站)
0 1 * * * wget -O /home/wwwroot/www.kucats.com/sitemap.xml --no-check-certificate https://www.kucats.com/diypath/sitemap.php  >/dev/null 2>&1

Ps:使用这个方法,注意sitemap.php里面的 require(‘./wp-blog-header.php’); 要改成 require(‘../wp-blog-header.php’); 也就是注意相对位置!

如果实在搞不清楚什么是相对路径,那么就用简单粗暴的方法:将网站根目录的sitemap.php重命名为一个只有自己知道的php文件,比如xml.php,然后如下添加任务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#每天在网站根目录生成一个sitemap.xml(xml.php为自己重命名的php文件名称)
0 1 * * * wget -O /home/wwwroot/www.kucats.com/sitemap.xml https://www.kucats.com/xml.php  >/dev/null 2>&1

这样一来,就解决了sitemap.xml是动态数据问题了!

文章最后

①、确认无误之后,已开通sitemap权限的就可以前往百度站长平台提交了,没开通权限的可以发送申请邮件到百度站长平台管理员邮箱申请,并且将sitemap.xml使用a标签链接在网站底部即可。

②、代码使用很简单,可以根据需要增减内容,比如觉得标签不应该出现在sitemap里面的,可以将标签部分的php代码删除即可,但一定要注意不要误删除结尾的</urlset>标签。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WordPress免插件生成完整站点地图(sitemap.xml)的php代码
前言:站点地图(sitemap.xml)的作用,相信站长们都有所了解,我就不献宝了。而免插件生成 sitemap.xml,网络上也早就有了纯代码生成的方法。 一直以来,张戈博客都是用 DX-SEO 这个很好用的中文 SEO 插件生成的 sitemap。今天整理电脑文件时,看到了以前收藏的生成 sitemap.xml 的 php 脚本,就随手打开看了看,发现这个代码只能生成主页和文章页的 sitemap。果断百度了一下,发现网上分享的都大同小异,只有首页和文章页。感觉有点缺憾,反正今天也是闲着,就动手改造了一
张戈
2018/03/23
1.9K0
wordpress纯代码生成sitemap.xml网站地图
wordpress默认不带xml网站地图,钻芒博客之前一直使用的是Google xml插件,今天帖一下纯代码生成xml网站地图,能少用一款插件就少用一款插件。
AlexTao
2019/07/22
1.9K0
wordpress纯代码生成sitemap.xml网站地图
移动搜索SEO分享:PHP自动生成百度开放适配及360移动适配专用的Sitemap文件
导读 随着智能手机的高速普及,人们将更多时间放到了手机上,麻利的做着以前只能在电脑上才能完成的购物、聊天、信息获取等事情。如此一来,站长们对移动端的 SEO 也就越来越关注。当然,也各大搜索引擎也开始发力移动搜索,比如百度近期推出的2014 网站移动化大赛和开放适配、360 推出的移动适配等。而张戈对于移动适配也是关注已久,写过不少相关文章,现在就来分享一个通过 php 自动生成百度开放适配和 360 移动适配的专用 sitemap 文件的方法。 先再次回顾下,张戈关于百度开放适配和 360 移动适配的历次
张戈
2018/03/26
1.6K0
移动搜索SEO分享:PHP自动生成百度开放适配及360移动适配专用的Sitemap文件
移动SEO分享:php自动提交复合型Sitemap到百度搜索
导读:本文分享的是移动 sitemap 协议说明及生成复合型 sitemap 的方法。所谓复合型就是指一个 sitemap.xml 既包含了 pc 页,也包含了 mobile 页!一旦提交,双管齐下,同时搞定了结构化数据和移动开放适配!而且此方法适用于任何 wordpress 建站的网站,包括响应式亦可提交带响应式标识的 sitemap!所以,网站是响应式的童鞋也就别在那“得瑟”你的响应式多么多么的高大上了!当然,如果你不在乎 SEO 那也可以不用浪费时间了。 ---- 不久前,张戈博客曾分享了《移动搜索
张戈
2018/03/23
1.3K0
建站SEO优化之站点地图sitemap
站点地图通常在 robots.txt 文件中声明,具体可看之前的文章(一文搞懂SEO优化之站点robots.txt)
村头的猫
2025/06/11
1580
建站SEO优化之站点地图sitemap
如何生成动态网站地图Sitemap.XML?
SEOer都知道,网站地图Sitemap对网站优化是非常重要的,特别是xml格式的sitemap.xml,因为搜索引擎蜘蛛们(如百度蜘蛛、360蜘蛛、搜狗蜘蛛等)在站内爬效率太低了,这些Spider也喜欢找到捷径,当网站有了sitemap.xml,Spider爬行网站时就更有效率了。所以开发一个动态输出sitemap.xml的程序对于SEO来说太有必要了,直接用动态程序,这样是不需要频繁手动更新。
用户9229846
2021/11/30
2.1K0
如何使用定时任务在Discuz X3.4中免插件自动生成sitemap.xml
为了更好的利于SEO,加快百度、360、谷歌、bing、搜狗等收录,我们需要网站生成sitemap.xml,有些搜索引擎只支持.xml,不支持.txt,所以我们必须在511遇见论坛下自动生成sitemap.xml,由于我们采用了伪静态,所以生成的链接必须和伪静态规则一致,在discuz后台插件搜索了几个,姑且不谈收费免费,发现很不稳定,且静态规则无法兼容,这里我们采用discuz的定时任务,自动生成sitemap.xml。
半夜喝可乐
2022/07/29
1.9K0
如何使用定时任务在Discuz X3.4中免插件自动生成sitemap.xml
如何自动提交站点地图给谷歌?
# 如何自动提交站点地图给谷歌? 将你的站点地图自动提交给谷歌 # 前言 本文教大家如何自动提交网站的站点地图到谷歌 前提条件为你已经有Search Console的账号并绑定了你的网站~ 如果不
taixingyiji
2022/07/25
1.5K0
如何自动提交站点地图给谷歌?
Php-Laravel输入站点地图(sitemap)
站点地图可以帮助搜索引擎更好的收录我们的站点,所以我们建站、建博客都最好有站点地图。
无道
2019/11/13
3K0
Php-Laravel输入站点地图(sitemap)
您的站点地图或站点地图索引文件未能正确声明命名空间
当我们提交sitemap地图到Google网站控制台时,会出现您的站点地图或站点地图索引文件未能正确声明命名空间的错误,那是怎么回事呢。接下来我告诉大家如何修改。
用户1088318
2025/05/21
1060
您的站点地图或站点地图索引文件未能正确声明命名空间
PHP制作百度站内搜索绿色通道的网页列表数据文件
用过百度站内搜索的朋友,都知道前不久推出了一个绿色收录通道,改善站内搜索的时效性和覆盖率,说明如下: 站内搜索结果数太少?最新的页面搜不到?您可以在本页面提交数据,提升您的站内搜索收录时效性和覆盖率。 方法 1:提交一个种子页面 URL,如网站首页,搜索引擎将从这个页面进行扩散,抓取站点的其他页面。 方法 2:提交网站列表(即 sitemap),列举您站点需要抓取的所有网页,该方法收录效果更好。 注:在此提交的数据将用于改善您的站内搜索质量,同时有机会被百度网页搜索收录,但并没有收录上的优待。 虽然,
张戈
2018/03/23
1.5K0
米扑科技的开源项目:sitemap-php 自动生成网站地图
米扑科技旗下的产品,近期正在做SEO网站优化,其中子需求之一是调研实现了网站地图(sitemap.xml)
阳光岛主
2019/02/18
2.1K0
米扑科技的开源项目:sitemap-php 自动生成网站地图
创建Google网站地图Sitemap.xml建议收藏
Sitemap.xml是google搞出来的,也就是网站地图,不过这个网站地图是用xml写的,而且要按google的标准来写,并且要将写出来的这个文件sitemap.xml上传到自己的服务器空间中去。目前,Google, Yahoo, MSN都已经声明支持这种格式,Baidu还没有声明支持,但估计走这一步也是大势所趋。这将是向众多搜索引擎提供你网站信息的一种很好的方法。
全栈程序员站长
2021/12/21
2.7K0
WordPress创建一个站点地图页面
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
5830
WordPress创建一个站点地图页面
帝国CMS的sitemap.xml设置和生成
因为折腾帝国CMS,测试都是帝国,其他不知道。直接放图和设置! 后台{栏目}--{自定义页面}-{管理自定义页面}--{增加自定义页面}
小沨
2020/10/23
2.1K0
shell脚本实现整站缓存和预缓存,进一步提升网站整体加载速度
在 Linux 中,shell 脚本结合系统任务计划 crontab,非常简单就能实现一些复杂程序才能完成的工作,开发成本低,且简单易学。 张戈博客之前也分享过不少 shell 在网站运营方面的妙用,比如: CCKiller:Linux 轻量级 CC 攻击防御工具,秒级检查、自动拉黑和释放 SEO 技巧:Shell 脚本自动提交网站 404 死链到搜索引擎 Linux/vps 本地七天循环备份和七牛远程备份脚本 nginx 日志切割及 7 天前的历史日志删除脚本 Shell+Curl 网站健康状态
张戈
2018/03/21
2K0
shell脚本实现整站缓存和预缓存,进一步提升网站整体加载速度
sscms、siteserver自动生成sitemap.xml
不过在最新的sscms中已将此功能移除; 如何利用现有模板生成sitemap.xml网站地图
2023/11/22
4280
sscms、siteserver自动生成sitemap.xml
wordpress自动生成站点地图sitemap.xml教程
访问:’域名+/sitemap.xml’,发现已经有XML格式的sitemap文件了,这样就可以在百度推送里添加链接,进行抓取推送了。
卡伊德
2023/07/21
2.3K1
wordpress自动生成站点地图sitemap.xml教程
免插件实现WordPress的Sitemap功能
生成 Sitemap 的插件有很多,比较知名的有柳城的 Baidu Sitemap Generator 和 Google XML Sitemaps,感觉就为了生成个 Sitmap 多用插件有点点浪费,
张戈
2018/03/21
1K0
php自动生成百度开放适配PC页-手机页pattern对应关系sitemap.xml
以前做百度开放适配一直是提交普通的 url 对应关系,这种方式有个缺点,就是必须每个页面的 url 关系都得兼顾,即有多少就得提交多少。 然而,很多网站并不是 WordPress 建站,所以以往我提供的 php 代码也无法满足所有网站的需求。遇到这种难题,其实百度也提供了另一种关系提交——PC 页-手机页 pattern 对应关系。 这种对应关系的优点在于,每一种 url 形式只需要提交一组具备正则对应关系的 xml 数据结构即可。 一、文章关系 对应文章页面,我的博客是%post_id%.html 的格式
张戈
2018/03/23
7150
推荐阅读
相关推荐
WordPress免插件生成完整站点地图(sitemap.xml)的php代码
更多 >
交个朋友
加入前端学习入门群
前端基础系统教学 经验分享避坑指南
加入腾讯云技术交流站
前端技术前沿探索 云开发实战案例分享
加入云开发企业交流群
企业云开发实战交流 探讨技术架构优化
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验