从 apache 迁移到 nginx 后在站点地图中

从 apache 迁移到 nginx 后在站点地图中

我有一个名为的站点地图http://www.domain.com/sitemap1.php. 它以以下代码开头:

<?php
echo '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="http://www.weddingpages.nl/sitemap.xsl"?><urlset 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/09/sitemap.xsd"        xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
';

从 Apache 迁移到 Nginx 后,Google 网站管理员工具开始拒绝我的站点地图,告诉我它们看起来像 HTML 页面。

当我查看输出时,我发现了一些奇怪的事情。

使用 Nginx:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="http://www.weddingpages.nl/sitemap.xsl"?><head/><urlset 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/09/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

使用 Apache:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="http://www.weddingpages.nl/sitemap.xsl"?><urlset 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/09/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

出于某种原因,我不明白 Nginx 抛出的

<head/>

就在 urlset 之前。

有人知道这是什么原因吗?我担心这就是问题的原因。但即使搜索了,我也没有找到答案。

答案1

我不知道自己回答这个问题是否正确。但几天后我终于找到了解决方案。

我要感谢 Alexey Ten 提到了“模块”这个词。看来 pagespeed 模块就是问题所在。在 nginx 配置文件中禁用 pagespeed 解决了这个问题。我读到 pagespeed 只会更改 html,所以 pagespeed 可能认为这个 xml 输出是 html。我再次启用 pagespeed 并添加:

header('Content-Type: text/xml');

在 .php 文件中。现在一切正常。奇怪的是,我也使用带有 pagespeed 模块的 Apache,但从未遇到过此问题。Nginx 与 Apache 相比,pagespeed 行为可能有所不同。

相关内容