宝塔控制面板用脚本每天自动生成WordPress网站地图(Sitemap.Xml)的方法
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
用过Wordpress的朋友都知道,Wordpress没有生成地图的功能,不过我们可以改造,具体请看我站内文章写过; WordPress免插件实现sitemap站点地图xml和html两个版本还写过 WordPress免插件生成完整sitemap(站点地图)的php代码这两篇文章,按照那篇都可以来操作,因为之前一直是Windows Server 2012 系统,没有安装宝塔,一直没有直接自动生成过,都是手动滴,最近服务器换成了Linux系统,装了宝塔,就可以直接用脚本来实现了,具体请看下面的代码;
wget https://www.laoliang.net/sitemap.php -O/laoliang.net/sitemap.xml --no-check-certificate >/dev/null 2>&1
PS:注意路径还有网址哦;
如果在Linux系统中,执行脚本也可以,那就需要另外的参数
Linux 定时任务+wget 定时生成 sitemap.xml
0 1 * * * wget -O /(此处为目录)laoliang.net/sitemap.xml --no-check-certificate https://www.laoliang.net/sitemap.php >/dev/null 2>&1 0 1 * * * wget https://www.laoliang.net/sitemap.php -O /此处为目录/laoliang.net/sitemap.xml --no-check-certificate >/dev/null 2>&1 crontab -e 0 5 * * * wget -O /xxx/xxx/web/sitemap.xml http://www.laoliang.net/sitemap.php (注:/xxx/xxx/web/为网站根目录)
PS:注意上面的01 05 都是时间01 是凌晨1点,05就是早上五点哦,可以根据自己的方式设置即可;
此处也加载上生成sitemap的代码吧;
<?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 老梁`s Blog (https://www.laoliang.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>
网站根目录的.htaccess(如果没有则新建为txt文档),加入如下规则:
Nginx 伪静态规则,新增如下规则:
rewrite ^/sitemap.xml$ /sitemap.php last;
Apache伪静态规则,新增如下规则:
RewriteRule ^(sitemap)\.xml$ $1.php
直接网站域名+sitemap.xml即可访问;
2021年0901更新
如果站点是 http 则添加以下代码:
wget -O /路径/laoliang.net/sitemap.xml http://www.laoliang.net/sitemap.php
如果站点是 https 则添加以下代码:
wget -O /路径/laoliang.net/sitemap.xml --no-check-certificate https://www.laoliang.net/sitemap.php
想在.htaccess文件中增加新的重定向规则的话,必须加在以上代码的前面,同时重定向语句的最后面一定加上参数[L],表明是之后不再进行重定向跳转,避免无限循环的重定向文件错误。
Apache伪静态规则 修改后的.htaccess如下:
RewriteRule ^sitemap?([0-9/-]+).xml$ sitemap.php?page=$1 [L]
也可以这样写~~~
RewriteRule ^sitemap.xml$ sitemap.php
nginx的服务在站点配置文件中添加 并重启nginx服务;
rewrite ^/sitemap.xml$ /sitemap.php last;
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!
赏
支付宝赞助
微信赞助
免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。
您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源 LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。
敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » 宝塔控制面板用脚本每天自动生成WordPress网站地图(Sitemap.Xml)的方法