{"id":60,"date":"2016-12-05T00:27:39","date_gmt":"2016-12-05T00:27:39","guid":{"rendered":"https:\/\/dmytronikolayev.com\/?p=60"},"modified":"2021-04-14T07:17:12","modified_gmt":"2021-04-14T07:17:12","slug":"values-provided-url-must-point-page-problem-googles-sdtt","status":"publish","type":"post","link":"https:\/\/www.endurantdev.com\/blog\/values-provided-url-must-point-page-problem-googles-sdtt\/","title":{"rendered":"All values provided for URL must point to the same page &#8211; problem in Google\u2019s SDTT"},"content":{"rendered":"<p>`Couple weeks ago people started to write about a problem with verification their structured data by <a href=\"https:\/\/search.google.com\/structured-data\/testing-tool\">Structured Data Testing Tool (SDTT) from Google<\/a>. This became a question for those who was using <a href=\"https:\/\/schema.org\/ItemList\">ItemList<\/a>.<\/p>\n<p>I got know about this when answered a question on StackOverflow about <a href=\"http:\/\/stackoverflow.com\/questions\/40130744\/representing-search-results-in-json-ld\/40133873?noredirect=1#comment68456176_40133873\">search results markup by structured data<\/a>. One of the guys asked about the problem in comments. I realized that I have the same error now. But when I pushed structured data to one of my sites (<a href=\"https:\/\/www.endurantdev.com\/\" target=\"_blank\" rel=\"noopener\">Software Development for Startups<\/a>) &#8211; everything was fine.<\/p>\n<p>I started to investigate, rechecked Schema.org markup. Everything was fine, so I thought this is a bug of SDTT, as other markup verification tools were passing that OK. There were same thoughts by other people like here:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-73\" src=\"https:\/\/www.endurantdev.com\/blog\/wp-content\/uploads\/2016\/12\/Screen-Shot-2017-01-13-at-11.04.35-PM-1024x408.png\" alt=\" All values provided for URL must point to the same page - Screen Shot of Grace's message on Webmaster Central Help Forum\" width=\"1024\" height=\"408\" srcset=\"https:\/\/www.endurantdev.com\/blog\/wp-content\/uploads\/2016\/12\/Screen-Shot-2017-01-13-at-11.04.35-PM-1024x408.png 1024w, https:\/\/www.endurantdev.com\/blog\/wp-content\/uploads\/2016\/12\/Screen-Shot-2017-01-13-at-11.04.35-PM-300x120.png 300w, https:\/\/www.endurantdev.com\/blog\/wp-content\/uploads\/2016\/12\/Screen-Shot-2017-01-13-at-11.04.35-PM-768x306.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>In few weeks after that, I was playing with <a href=\"https:\/\/www.ampproject.org\/\">AMP<\/a>, and I understood the source of the problem. Occasionally, when I was applying structured data to AMP pages to allow articles to come into google top stories for some search results, I found that one of the parts doesn\u2019t pass again. I played a lot with it but then returned to <a href=\"https:\/\/schema.org\/ItemList\">ItemList<\/a>.<\/p>\n<p>According to Google policies, you can\u2019t have more than one <a href=\"https:\/\/schema.org\/ItemList\">ItemList<\/a> on the page. Well, actually two, but the second one is <a href=\"https:\/\/developers.google.com\/search\/docs\/data-types\/breadcrumbs\">BreadcrumbList<\/a> (Schema: <a href=\"http:\/\/schema.org\/BreadcrumbList\">http:\/\/schema.org\/BreadcrumbList<\/a>).<\/p>\n<p>So, I read about a usage of <a href=\"https:\/\/schema.org\/ItemList\">ItemList<\/a> on Google\u2019s <a href=\"https:\/\/developers.google.com\/search\/docs\/guides\/mark-up-listings\">markup listings guideline<\/a>.<\/p>\n<p>Instead of a global definition of lists of Items as Schema.org provides Google decided to split this one into two consistent definitions. These lists are called host-specific, and they can be marked up <a href=\"https:\/\/developers.google.com\/search\/docs\/guides\/mark-up-listings#how-to-mark-up-host-specific-lists\"><strong>Separately<\/strong> or <strong>Combined<\/strong><\/a>.<\/p>\n<p>There is a good explanation of this in the link, but in few words:<\/p>\n<ul>\n<li>if you want to give URLs to different pages (so listed items are on different pages) &#8211; you use \u201c<em>separate<\/em>\u201d variation of <a href=\"https:\/\/schema.org\/ItemList\">ItemList<\/a>.<\/li>\n<li>Otherwise, you have multiple items on one page (marked by IDs, so you can give links with anchors to the same page) &#8211; <em>Combined<\/em> variant, please.<\/li>\n<\/ul>\n<p>So, <em>separately marked up<\/em> list is looking like(<a href=\"https:\/\/developers.google.com\/search\/docs\/guides\/mark-up-listings#how-to-mark-up-host-specific-lists\">Both examples are coming from same Google Developer\u2019s page<\/a>):<\/p>\n<pre><code>{\n  \"@context\":\"http:\/\/schema.org\",\n  \"@type\":\"ItemList\",\n  \"itemListElement\":[\n    {\n      \"@type\":\"ListItem\",\n      \"position\":1,\n      \"url\":\"http:\/\/example.com\/desserts\/apple-pie\"\n    },\n    {\n      \"@type\":\"ListItem\",\n      \"position\":2,\n      \"url\":\"http:\/\/example.com\/desserts\/cherry-pie\"\n    },\n    {\n      \"@type\":\"ListItem\",\n      \"position\":3,\n      \"url\":\"http:\/\/example.com\/desserts\/blueberry-pie\"\n    }\n  ]\n}\n<\/code><\/pre>\n<p>Now, let\u2019s talk about <em>Combined version<\/em> and return to the main problem with \u201cAll values provided for URL must point to the same page\u201d error. If you see this error, then you used Combined version with <a href=\"https:\/\/schema.org\/item\">Item<\/a> inside, but URLs are coming to different pages(URLs). For <a href=\"https:\/\/www.ampproject.org\/\">accelerated mobile pages<\/a>, this structured data show to Google that you want to show carousel from the items on your page in search results. No matter you want to list some real Product or <a href=\"https:\/\/www.shutterstock.com\/g\/iranick\">vector pattern<\/a>. Each item should have a type, etc. Here is JSON-LD example by Google with a list of different pies that goes to the same page:<\/p>\n<pre><code>\n{\n  \"@context\": \"http:\/\/schema.org\",\n  \"@type\": \"ItemList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"item\": {\n        \"@type\": \"Recipe\",\n        \"url\": \"http:\/\/example.com\/desserts\/pies\/#apple-pie\",\n        \"name\": \"Apple Pie\",\n        \"image\": \"https:\/\/example.com\/300px-Apple_pie.jpg\",\n        \"author\": {\n          \"@type\": \"Person\",\n          \"name\": \"Carol Smith\"\n       },\n      \"datePublished\": \"2009-11-05\"\n      }\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"item\": {\n        \"@type\": \"Recipe\",\n        \"url\": \"http:\/\/example.com\/desserts\/pies\/#cherry-pie\",\n        \"name\": \"Cherry Pie\",\n        \"image\": \"http:\/\/www.example.com\/images\/cherry.jpg\",\n         \"author\": {\n          \"@type\": \"Person\",\n          \"name\": \"Carol Smith\"\n       },\n      \"datePublished\": \"2009-11-05\"\n     }\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 3,\n      \"item\": {\n        \"@type\" : \"Recipe\",\n        \"url\":\"http:\/\/example.com\/desserts\/pies\/#blueberry-pie\",\n        \"name\": \"Blueberry Pie\",\n        \"image\": \"http:\/\/www.example.com\/images\/blueberry.jpg\",\n        \"author\": {\n          \"@type\": \"Person\",\n          \"name\": \"Carol Smith\"\n       },\n      \"datePublished\": \"2009-11-05\"\n      }\n    }\n  ]\n}\n<\/code><\/pre>\n<p>It might look close to this top stories, some kind of this carousel:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-74\" src=\"https:\/\/www.endurantdev.com\/blog\/wp-content\/uploads\/2016\/12\/Screen-Shot-2017-01-13-at-11.10.28-PM.png\" alt=\"Carousel Example from Google Search\" width=\"724\" height=\"512\" srcset=\"https:\/\/www.endurantdev.com\/blog\/wp-content\/uploads\/2016\/12\/Screen-Shot-2017-01-13-at-11.10.28-PM.png 724w, https:\/\/www.endurantdev.com\/blog\/wp-content\/uploads\/2016\/12\/Screen-Shot-2017-01-13-at-11.10.28-PM-300x212.png 300w\" sizes=\"auto, (max-width: 724px) 100vw, 724px\" \/><\/p>\n<p>So, to fix the problem with your structured data, please use the correct version of <a href=\"https:\/\/schema.org\/ItemList\">ItemList<\/a>:<\/p>\n<ul>\n<li>If your items are on the same page, please use the version with items inside, the Combined one.<\/li>\n<\/ul>\n<ul>\n<li>Otherwise, if you point to different pages inside and your items are not on one page, please DON\u2019T put item element with type, and other description inside, the Separately marked up one.<\/li>\n<\/ul>\n<p>After selecting one of these versions of <a href=\"https:\/\/schema.org\/ItemList\">ItemList<\/a>, you will not see \u201cAll values provided for URL must point to the same page\u201d again in SDTT. I think that Google pushed a new version of SDTT and their parser, as they support AMP a lot, but had no time to update all examples on their Developer\u2019s section. This is only my assumption again.<\/p>\n<p><strong>UPDATE (28.04.2017).<\/strong> People started to ask about the same problem again in comments and personal email\/PMs. Will try to add few my thoughts. So, Check example website that I helped to fix structured data: <a href=\"https:\/\/pharmacy-near-me.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pharmacy Near Me<\/a>. If you go by this link to SDTT: <a href=\"https:\/\/search.google.com\/structured-data\/testing-tool\/u\/0\/#url=pharmacy-near-me.com\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/search.google.com\/structured-data\/testing-tool\/u\/0\/#url=pharmacy-near-me.com<\/a>\u00a0&#8211; you will see that everything is fine and <em>itemList<\/em> has no errors. However, If you copy the code of that page and try to check the code(instead of URL load) &#8211; you will get the same error again. Code examples in my post are to help to build your structured data. Do not start to tell about problems if your code is OK except the problem with &#8220;<strong>All values provided for <i>URL<\/i> must have the same domain<\/strong>&#8220;: Try to follow instructions from Google Developer&#8217;s pages and some info from this article and <strong>load your page from the real domain into SDTT!<\/strong><\/p>\n<p><em>So, once again, but with some additional focus on domains and URLs:\u00a0<\/em><\/p>\n<ul>\n<li>Using Combined style of itemList: you are doing the full description of multiple items on one page. So, these items do not have own pages and are listed as is on this page. Page URL should be equal to the ones in the structured data.<br \/>\nHere is an example. You load\u00a0<em>http:\/\/example.com\/desserts\/pies\/<\/em>, AND all URLs in structured data should be the anchored ones from the page, like <em><em><em>http:\/\/example.com\/desserts\/pies\/#cherry<\/em><\/em><\/em><\/li>\n<li>Using Separated style of itemList: you are doing a short description of listed items. So, this is just a list to point to pages of that items. Each item has own URL, but ALL their URLs are from the same domain you load a page from. This is my assumption, actually: I mean, Structured Data is needed to improve how your page looks in SERP. But if you point your URLs to other domains, then you try to improve how that pages look like?? \ud83d\ude42<\/li>\n<\/ul>\n<p>Thanks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>`Couple weeks ago people started to write about a problem with verification their structured data by Structured Data Testing Tool (SDTT) from Google. This became a question for those who was using ItemList. I got know about this when answered a question on StackOverflow about search results markup by structured&#8230;<\/p>\n","protected":false},"author":1,"featured_media":62,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[12,25,26,27],"class_list":["post-60","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology","tag-google","tag-seo","tag-structured-data","tag-technology"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/posts\/60","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/comments?post=60"}],"version-history":[{"count":6,"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/posts\/60\/revisions"}],"predecessor-version":[{"id":253,"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/posts\/60\/revisions\/253"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/media\/62"}],"wp:attachment":[{"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/media?parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/categories?post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.endurantdev.com\/blog\/wp-json\/wp\/v2\/tags?post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}