服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > php教程 >

使用php制作动态的sitemap

时间:2016-02-09 16:42来源:未知 作者:最模板 点击:
这里用php实现了一个自动化的站点地图生成器,可以在爬虫访问站点地图的时候动态的创建页面,来提供一份实时更新的sitemap.xml。 具体的实现,首先你需要让apache服务器支持将xml文件

这里用php实现了一个自动化的站点地图生成器,可以在爬虫访问站点地图的时候动态的创建页面,来提供一份实时更新的sitemap.xml。

具体的实现,首先你需要让apache服务器支持将xml文件作为php来解析,这样sitemap.xml中的php语句得以执行。

可在站点根目录下的.htaccess文件的  之间加入这一句:

AddType application/x-httpd-php .xml

至于php部分,其实就是先获取网站首页所有的url,再将url写入页面,同时将创建的日期设为今天。这样爬虫就会认为站点是实时更新的,从而提高搜索排名。然后就是sitemap.xml的源代码:

<?php
error_reporting(0);//禁止报错
header("Content-type:text/xml"); //输出xml作为文档的头部
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.zuimoban.com">';

function _getUrlContent($url) {
    $handle = fopen($url, "r");
    if ($handle) {
        $content = stream_get_contents($handle, 1024 * 1024);
        return $content;
    } else {
        return false;
    }
}

function _filterUrl($web_content) {
    $reg_tag_a = '/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/';
    $result = preg_match_all($reg_tag_a, $web_content, $match_result);
    if ($result) {
        return $match_result[1];
    } 
} 

function _reviseUrl($base_url, $url_list) {
    $url_info = parse_url($base_url);
    $base_url = $url_info["scheme"] . '://';
    if ($url_info["user"] && $url_info["pass"]) {
        $base_url .= $url_info["user"] . ":" . $url_info["pass"] . "@";
    } 
    $base_url .= $url_info["host"];
    if ($url_info["port"]) {
        $base_url .= ":" . $url_info["port"];
    } 
    $base_url .= $url_info["path"];
    if (is_array($url_list)) {
        foreach ($url_list as $url_item) {
            if (preg_match('/^http/', $url_item)) {
                $result[] = $url_item;
            } else {
                $real_url = $base_url . '/' . $url_item;
                $result[] = $real_url;
            } 
        } 
        return $result;
    } else {
        return;
    } 
} 

function crawler($url) {
    $content = _getUrlContent($url);
    if ($content) {
        $url_list = _reviseUrl($url, _filterUrl($content));
        if ($url_list) {
            return $url_list;
        } else {
            return ;
        } 
    } else {
        return ;
    } 
} 

function main() {
    $current_url = "//www.zuimoban.com";
    $result_url_arr = crawler($current_url);
    if ($result_url_arr) {
        foreach ($result_url_arr as $url) {
            echo '
<url>
<loc>'.$url.'</loc>
<lastmod>'.date("Y/m/d").'</lastmod>
<changefreq>always</changefreq> 
<priority>1.0</priority>
</url>
';
        } 
    }
    echo '</urlset>';
}
main();
?>
(责任编辑:最模板)
顶一下
(1)
33.3%
踩一下
(2)
66.7%
------分隔线----------------------------
栏目列表
热点内容