Please bear with me, as this one is quite technical and complicated:
A client of mine insists on presenting a major section ('/section/') of her website as one long list of pages. When a user clicks on a navigation item (eg '/section/#page'), he is scrolled down to the appropriate page within this list (a form, a slideshow, a content bit, anything really). In essence, the site section is one long page scroll with anchors.
Obviously, our client still wants SEO results. She therefore ideally wishes to be able to have '/section/#page' separately indexed, so that she can assign this page distinct title tags and meta descriptions and link build to it. As luck would have it, the pages are actually present in the CMS separately, so it's perfectly possible to give each page its own title and description. Since the pages are loaded into one long list however, we can currently present these titles and descriptions to the search engines.
Enter my idea to make this happen:
- We use Google's #! ('hashbang' AJAX standard, see [developers.google.com
...] to link to the anchors. In practice, this means we change the link to '/section/#page' to now point to '/section/#!page', which triggers Google to re-request the page as 'page/?_escaped_fragment_=page'
- We intercept the 'escaped_fragment' query string server side and output the page separately from the CMS
- Note that the hashbang is the only workable solution here, since using pushstate would cause the user to land on the separate page instead of the anchor within the section.
Under this solution, Google SHOULD index the '#!page', '#!page2' anchor sections as separate pages, giving us the freedom to assign them separate title tags etc. My main question is: is this a 'bannable' offence?
I know the hashbang standard is mainly used for legit AJAX cloaking, but this off-label usage seems legit to me as well. We are not spamming the search engines in any way and are not breaking the user experience, but are just providing the search engines with some extra context in the way of title tags and meta descriptions.