基本每个wordpress都有个站点地图,方便蜘蛛来爬。
本次用个免插件的方法制作。
方法来源网上,可自取。
1.PHP代码,添加进wp根目录
<?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 张戈博客(https: //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 /* 文章页面 */ header( "Content-type: text/xml" ); $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> |
二、伪静态
①、Nginx
编辑已存在的Nginx伪静态规则(我加入了lnmp自带的wordpress伪静态中),新增如下规则后(平滑)重启nginx即可:
rewrite ^/sitemap.xml$ /sitemap.php last; |
②、Apache
编辑网站根目录的 .htaccess ,加入如下规则:
RewriteRule ^(sitemap)\.xml$ $1 .php |
做好伪静态规则后,就可以直接访问sitemap.xml看看效果了,比如 http://www.dsecret.com/sitemap.xml
不设置伪静态无法访问