我找不到解决方案,我也在Google论坛上询问过,但他们还没有解决问题。
由于我的网页每天都在变化,我正在使用 PHP 生成动态站点地图。我为此遵循的过程:
1.- 使用以下代码创建一个名为
sitemap.php
的文件:
<?php
header("Content-type: text/xml");
echo "<?xml version='1.0' encoding='UTF-8'?>";
echo "<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'
xmlns:news='http://www.google.com/schemas/sitemap-news/0.9'>";
require 'admin/config.php';
require 'funciones.php';
try {
$conexion = new PDO($bd_config['dbname'], $bd_config['usuario'], $bd_config['password'] );
} catch (PDOException $e) {
header ('Location: error.php');
echo "ERROR: ".$e->getMessage();
die();
}
//CODE
echo "</urlset>\n";
?>
2.- 在
.htaccess
文件中我插入以下代码:
RewriteRule ^sitemap\.xml$ sitemap.php [L]
3.- 最后,在
robots.txt
文件中添加其他代码:
Sitemap: http://www.laxtore.com/sitemap.php
但是每当我在 Google 中上传文件时,它都会将其识别为 HTML 文件,即使我转到文件目录,XML 也会正确生成。您可以在这里查看:http://www.laxtore.com/sitemap.php
由于声誉问题,我还无法分享图像(我是新来的)。
¿有办法解决这个问题吗?我也尝试过使用在线生成的 xml,即使使用该文件,我也收到相同的错误
编辑:
Google 支持人员告诉我,我不能使用此结构:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>http://www.example.org/business/article55.html</loc>
<news:news>
<news:publication>
<news:name>The Example Times</news:name>
<news:language>en</news:language>
</news:publication>
<news:genres>PressRelease, Blog</news:genres>
<news:publication_date>2008-12-23</news:publication_date>
<news:title>Companies A, B in Merger Talks</news:title>
<news:keywords>business, merger, acquisition, A, B</news:keywords>
<news:stock_tickers>NASDAQ:A, NASDAQ:B</news:stock_tickers>
</news:news>
</url>
</urlset>
但是他们在其网站上作为示例:https://support.google.com/news/publisher/answer/74288?hl=es
编辑2:
尝试修改该结构并仅使用:
echo "<url>\n";
echo "<loc>http://www.laXtore.com/noticia/" . $articulo['ID'] . "/" . limpia_url($articulo['titulo']) . "/</loc>\n";
echo "<changefreq>daily</changefreq>\n";
echo "<priority>1</priority>\n";
echo "</url>\n";
我一直遇到同样的问题。我认为这可能是由于
www.
重定向或其他原因造成的。在Google网站管理员工具中,当我发送站点地图时,URL是http://laxtore.com/sitemap.php
,但是要访问站点地图我必须引入http://www.laxtore.com/sitemap.php
,否则不收费。
尝试向 Google 发送您的 XML 站点地图,我认为如果站点地图不以 .xml 结尾,Google 不会将站点地图识别为 XML。 https://www.laxtore.com/sitemap.xml
您尝试过的这种结构:
?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>http://www.example.org/business/article55.html</loc>
<news:news>
<news:publication>
<news:name>The Example Times</news:name>
<news:language>en</news:language>
</news:publication>
<news:genres>PressRelease, Blog</news:genres>
<news:publication_date>2008-12-23</news:publication_date>
<news:title>Companies A, B in Merger Talks</news:title>
<news:keywords>business, merger, acquisition, A, B</news:keywords>
<news:stock_tickers>NASDAQ:A, NASDAQ:B</news:stock_tickers>
</news:news>
</url>
</urlset>
是 Google 新闻的站点地图,只能由发布商使用。
你还应该有一个www。 Search Console 帐户(如果您将此作为您的网站网址)。
我认为问题与您的浏览器未获取正确的 Content-Type 以及将 XML 代码显示为纯文本而不是 XML 文档有关。尝试将代码第 2 行的 Content-Type HTTP 标头更改为
application/xml
,如下所示:
<?php
header("Content-type: text/xml");
此外,由于您已在步骤 2 中正确设置了从
/sitemap.xml
到 /sitemap.php
的 URL 重写,因此我建议您更新 robots.txt 文件以声明 XML 站点地图的重写 URL,如下所示:
Sitemap: http://www.laxtore.com/sitemap.xml
最后,为了提高性能并减少带宽消耗,请考虑将 XML 输出写入静态 XML 文件,而不是在对此 URL 的每个请求上运行代码,并确保您的静态 XML 站点地图文件返回
application/xml
HTTP Content-Type(请参阅我的回答:我应该为 XML 站点地图发送什么 Content-Type 值?)。