我有一个用 PHP 动态创建的大型站点地图,它有一个包含大约 230 个单独站点地图的站点地图索引,每个单独的站点地图有 3.000 到 15.000 个 URL。
在这 230 个站点地图中的大多数中,一切正常,但其中一些 URL 包含特殊字符并且 Google 返回错误,不接受此类站点地图。一个正常的、被接受的 URL 的例子:
http://www.site.com/Gentofte-Greve/Denmark 1 Badmintonligaen/12-fe-juice_a-1091627-1-33-1-odds/
损坏 Google 的整个站点地图文件的 URL 示例:
http://www.site.com/Team%20%C5rhus%20Elite-Solr%F8d%20Strand/Denmark 1 Badmintonligaen/12-fe-juice_a-1091631-1-33-1-odds/
任何特殊字符,例如北欧字符,都会破坏站点地图。这是北欧字符的示例:http: //www.borgos.nndata.no/alfabet.htm
我的问题是 - 我如何对这些特殊字符(和其他类似字符)进行编码,以便站点地图仍然可以正常检查。如果这是一个解决方案,我应该使用哪个 PHP 编码函数?是使用 str_replace 并用普通字符替换这些字符的唯一解决方案吗?这不是问题,无论您在它的第一部分写什么,该 URL 都有效,因为该部分仅用于 SEO,但这会很耗时。我希望能够以不会破坏 Google 站点地图的方式编写这些特殊字符。
关于我的站点地图的其他一切都很好,它们是用 UTF-8 编码的,或者至少它们应该使用这一行:
<?xml version='1.0' encoding='UTF-8'?>