带有 MySql 数据库的动态 PHP 网站;如何为此创建站点地图?

Posted

技术标签:

【中文标题】带有 MySql 数据库的动态 PHP 网站;如何为此创建站点地图?【英文标题】:Dynamic PHP website with MySql database; How to create a sitemap for this? 【发布时间】:2011-05-25 22:00:26 【问题描述】:

我有一个分类网站。该网站基于 php,并使用 mysql 数据库。

今天,我有一个必须使用外部 php 脚本更新的站点地图。 此 php 脚本从数据库中获取所有分类信息并创建一个全新的 xml 站点地图。

问题是我必须手动执行此操作,首先打开 php 脚本,然后等待它完成,然后再次将站点地图提交给谷歌(即使最后一步是可选的,我仍然这样做)。

我还必须指出,即使我确实将其提交给 google,它仍然没有被编入索引(不会出现在搜索结果中),这是我想要的。

我希望分类广告尽快显示在 google SERPS 中。目前这需要的时间太长......大概一周左右。

无论如何,我需要知道如何改进我拥有的这种方法。 我应该在每个新分类上打开并写入 xml 文件吗?

我犹豫是否这样做,因为这意味着文件几乎一直处于打开状态,因为新分类很频繁,有时同时有几个新分类,那么这将如何影响打开和写入文件如果该文件已在使用等...

有没有其他方法,比如向google提交一个php站点地图,每当google访问这个php文件时,就会动态创建一个新的xml?

需要一些关于如何以最佳方式执行此操作的想法...

另外,问题 2: 如果我的服务器上没有指向特定页面的任何链接(站点地图中的链接除外),该页面是否仍会被编入索引?

谢谢

【问题讨论】:

【参考方案1】:

您对 Google 的要求太高了。他们不是魔法。索引整个互联网是一项艰巨的任务。他们不是在那里做你想做的事。但是,有一些方法可以让谷歌更快地注意到事情,也有一些方法可以通过其他方式获得更多最新的搜索。

第一步。 xml 站点地图很好,但它仍然有助于拥有合法的 html 无处不在的链接列表/地图。这是因为链接通常比站点地图更重要。如此多的搜索引擎可以更快地找到它们。

在这点上,不是唯一链接到您的东西的东西是一个巨大的帮助。索引的工作方式意味着越早进入列表意味着越早在谷歌中更新。来自外部的更多链接意味着更多的入口点。

此外,Google 确定您网站重要性的方式部分取决于其他人链接到您的数量。更重要意味着更频繁地被抓取以获取新信息。

现在,关于实时搜索。搜索中的“下一件大事”是使用实时项目来获得更相关的结果。谷歌已经为某些事情做了一些这样的事情。体育,大型活动,例如最近的太空探索公司发射,等等。他们正在使用 Buzz 和 Twitter。其他人正在使用 facebook 和其他一些服务。

鼓励您的用户在推特/点赞您的商品可以让您更易于实时搜索。因此,当一个新列表出现时,推特上可能会出现一堆链接,然后它们更有可能出现在实时搜索中。

【讨论】:

【参考方案2】:

您可以将构建站点地图的脚本放入创建新分类广告的逻辑循环中。这样,每次创建新广告时,站点地图都会更新。

Google has advice 关于使用 HTTP ping 服务自动提交站点地图。您可以使用 PHP 的 Client URL Library 来创建 ping。

最后,如果您试图让 Google 更快地为您的网页编制索引,那么您会很不走运。正如他们在Webmaster Guidelines(在站点地图部分)中所说:

Google 不保证我们会抓取您的所有网址或将其编入索引。

简而言之:在 Google 的算法开始认为您的网站是 HotShitTM 之前,他们不会为每个 URL 编制索引,并且通常会花时间处理它,无论站点地图与否。

【讨论】:

【参考方案3】:

我为 Laravel 网站创建了一个小型站点地图。由于它的 MVC 拱结构保持不变。

路由部分:

Route::get('/sitemap', ['as' => 'Sitemap index', 'uses' => 'SiteMapController@index']);
Route::get('/sitemap/page', ['as' => 'Sitemap page', 'uses' => 'SiteMapController@page']);

查看第二部分文件 Index.php 这将是主站点地图索引文件

 <?xml version="1.0" encoding="UTF-8"?>
   <sitemapindex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">  
    <sitemap>
    <loc><?php echo url('/') ?>/sitemap/page</loc>
    <lastmod><?php echo date('c', time()); ?></lastmod>
</sitemap>
<sitemap>
    <loc><?php echo url('/') ?>/sitemap/exchanges</loc>
    <lastmod><?php echo date('c', time()); ?></lastmod>
</sitemap>

page.php 这是单个 urlset 的附件文件

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<?php foreach ($posts as $post)  ?>
    <url><loc><?php echo url('/') ?>/<?php echo $post['uri']; ?></loc><lastmod><?php echo $post['time']; ?></lastmod> <changefreq><?php echo $post['freequency']; ?></changefreq>
        <priority><?php echo $post['priority']; ?></priority>
    </url>
<?php  ?>
</urlset>

现在,控制器,在您运行 show:SitemapController.php 的地方,您可以根据您在内容中提供的更新的频率和新鲜度来更改时间。

  class SiteMapController extends Controller 

    public function index() 
    return response()->view('sitemap.index')->header('Content-Type', 'text/xml');
     

 public function page() 
    $posts = array(
        array("uri" => "", "time" => date('c', time()), "freequency" => "Daily", "priority" => "0.8"),
        array("uri" => "about-us", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
        array("uri" => "contact-us", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
        array("uri" => "privacy-policy", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
        array("uri" => "cookie-policy", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
        array("uri" => "thank-you", "time" => "2018-08-17", "freequency" => "Monthly", "priority" => "0.5"),
    );

    return response()->view('sitemap.page', ['posts' => $posts])->header('Content-Type', 'text/xml');
  

【讨论】:

以上是关于带有 MySql 数据库的动态 PHP 网站;如何为此创建站点地图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php/Mysql 动态更改 CSS 样式。我想创建每个用户独有的主题?

动态网站安全问题(PHP+MySQL)

PHP+MySQL动态网站开发从入门到精通pdf

LNMP网站架构

企业题目php mysql动态网站毕业设计成品

在 PHP 中生成带有动态图像的 ODT 文档