跨域sitemap.xml

时间:2014-06-18 11:01:17

标签: seo cross-domain sitemap

我目前有一个在线应用程序,允许用户在多个不同的域名上创建个人页面,包括主要的域名。

用户网站可能如下所示:

  • john.mainappdoman.com - mainappdomain.com是用户用来创建网站的主要域名
  • user.hosteddomain.com
  • another.secondarydomain.com
  • third.mydomain.com

如果我生成包含所有域名中所有用户网站的单个sitemap.xml,这样可以吗?所有域名的sitemap.xml都可以相同吗?

3 个答案:

答案 0 :(得分:2)

根据sitemap.org,还允许在站点地图中映射多个域,sitemaps_cross_submits中对此进行了描述。为方便起见,我在这里详细说明。

要从单个主机提交多个主机的站点地图,您需要"证明"在Sitemap中为其提交网址的所有者的所有权。

参考这里的一个例子。我们假设您要为3位主机提交Sitemaps:

www.host1.com with Sitemap file sitemap-host1.xml
www.host2.com with Sitemap file sitemap-host2.xml
www.host3.com with Sitemap file sitemap-host3.xml

此外,您希望将所有三个Sitemap放在一个主机上:www.sitemaphost.com。因此,Sitemap网址将为:

http://www.sitemaphost.com/sitemap-host1.xml
http://www.sitemaphost.com/sitemap-host2.xml
http://www.sitemaphost.com/sitemap-host3.xml

默认情况下,这会导致交叉提交"错误,因为您尝试通过www.sitemaphost.com上托管的Sitemap提交www.host1.com的URL(对于其他两个主机也是如此)。避免错误的一种方法是证明您拥有(即有权修改文件)www.host1.com。您可以通过修改www.host1.com上的robots.txt文件指向www.sitemaphost.com上的站点地图来执行此操作。

在此示例中,http://www.host1.com/robots.txt处的robots.txt文件将包含" Sitemap:http://www.sitemaphost.com/sitemap-host1.xml"行。通过修改www.host1.com上的robots.txt文件并将其指向www.sitemaphost.com上的站点地图,您已经隐含地证明您拥有www.host1.com。换句话说,控制www.host1.com上的robots.txt文件的任何人都信任http://www.sitemaphost.com/sitemap-host1.xml上的Sitemap包含www.host1.com的网址。对于其他两个主机,可以重复相同的过程。

现在您可以在www.sitemaphost.com上提交站点地图。 当特定主机的robots.txt(例如http://www.host1.com/robots.txt)指向另一台主机上的Sitemap或Sitemap索引时;对于每个目标站点地图,例如http://www.sitemaphost.com/sitemap-host1.xml,预计所有URL都属于指向它的主机。这是因为,如前所述,Sitemap预计只有来自单个主机的URL。

答案 1 :(得分:2)

否。您无法将所有网站的所有网址都放在一个sitemap.xml文件中。每个域和子域都被视为一个不同的网站,因此每个域都必须有自己的sitemap.xml文件。

http://www.sitemaps.org/protocol.html

第一部分的最后一段
  

此外,站点地图中的所有网址都必须来自单个主机,例如www.example.com store.example.com。有关更多详细信息,请参阅站点地图文件位置

强调我的。 是英语,它是独占的:一个或另一个,而不是两者。

很明显,您无法在同一个sitemap.xml中拥有来自host1.example.com和host2.example.com的网址

此外,正如hyip的回答所指出的,sitemap.xml需要位于您网站的根目录中。请参阅此答案:http://www.sitemaps.org/faq.html#faq_sitemap_location

  

站点地图中列出的所有网址都必须与站点地图位于同一主机上。例如,如果站点地图位于http://www.example.com/sitemap.xml,则它不能包含来自http://subdomain.example.com的网址。如果站点地图位于http://www.example.com/myfolder/sitemap.xml,则不能包含来自http://www.example.com的网址。

您可以使用robots.txt来指明sitemap.xml文件的跨域位置,以指示sitemap.xml的位置。但是,这并不意味着您可以创建一个包含来自所有网站的URL的sitemap.xml。

请注意,使用良好的CMS,您应该可以为每个网站创建一个sitemap.xml。它可能会更容易,因为你肯定不会达到每个XML文件限制50,000个URL,而一个文件可能会...

答案 2 :(得分:1)

您可以使用以下方式之一:

  • 单个站点地图,包含多个网站的网址,包括来自不同网域的网站。例如,位于http://host1.example.com/sitemap.xml的Sitemap可以包含以下网站的网址:

http://host1.example.com

http://host2.example.com

http://host1.example1.com

http://host1.example.ch

  • 所有位于一个位置的个人站点地图(每个站点一个)。例如:

http://host1.example.com/host1-example-sitemap.xml

http://host1.example.com/host2-example-sitemap.xml

http://host1.example.com/host1-example1-sitemap.xml

http://host1.example.com/host1-example-ch-sitemap.xml

有更多信息here