2017-02-09 2 views
0

In meiner Ruby on Rails App zeige ich mehrere paginierte Elemente auf einer einzigen Seite. Für die Paginierung einzelner Elemente kann ich die Paginierung und die Attribute rel='prev' und 'next' Attribute und kanonisch verwenden. Aber in meinem Fall kann es mehrere Permutationen und Kombinationen einer Seite geben, und das verwirrt mich. Aus der Sicht eines Anwenders wird er/sie glücklich sein, verschiedene Arten von Informationen zu einem Objekt auf einer einzelnen Seite und Paginierungen zu sehen. Aber aus der Sicht der Suchmaschinen ist es nicht so freundlich und kann teilweise doppelte Inhalte verursachen. Meine Absicht ist es, für die Indexseite und google, um den Inhalt aus dem Index und paginierten Seiten zu finden. Einige dieser Elemente sind auch von anderen Seiten in verschiedenen Auflistungen auf der separaten Seite zugänglich. Außerdem möchte ich eine sitemap.xml-Datei erstellen.Kaminari: Mehrere Paginierungen auf einer Seite, Indexierung und kanonische

So habe ich folgende Optionen:

  1. nur Indexseite im Index behalten und der Rest der paginierte Seiten in Noindex machen mit Roboter Meta-Tag.

  2. Verwenden Sie kanonische URLs aus der Anforderungs-URL und verwenden Sie nicht rel = 'prev' und 'next', da sonst 10x10 = 100 Variationen der Seite verursacht werden, wenn jedes Element 10 Seiten enthält.

  3. Verwenden Sie kanonische URLs und rel = 'next' und 'prev' für eines der paginierten Elemente und ignorieren Sie den Rest der URLs oder verwenden Sie das noindex-Meta-Tag für den Rest der URLs. Ich lehne diese Lösung an. So wird es effektiv eine Seitenumbruch auf meiner Seite und Rest der URLs nicht stören.
  4. Oder ich sollte nur einen einzigen page Parameter verwenden und diesen verwenden, um alle anderen paginierten Modelle sowie zu paginieren. Und wenn eines der Elemente keine weiteren Seiten mehr enthält, sollte ich den Inhalt der letzten Seite für dieses Element anzeigen und andere Elemente paginieren. Aber ich weiß nicht, wie kann ich das mit Kaminari machen? Ab sofort verwende ich drei verschiedene page_param, um diese Modelle zu paginieren. Ich denke, es wird die bevorzugte und bessere Lösung sein.

Hier ist mein aktueller Code:

def show 
     @state = State.published.friendly.find(params[:id]) 
     @cities = @state.cities.published.sorted.page(params[:page]).per(10) 
     @events = @state.events.published.sorted.page(params[:cities_page]).includes(:cities).per(10) 
     @articles = @state.articles.published.sorted.includes(:user).page(params[:articles_page]).per(10) 
     add_breadcrumb 'States', states_url 
     add_breadcrumb @state.name, @state 
    end 

und Städte Seite hat zwei paginierte Artikel, Veranstaltungen und Nachrichten aus dieser Stadt. Ich zeige diese drei paginierten Elemente mit Tabs.

Antwort

0

Warum erstellen Sie nicht einfach für jeden Datensatztyp einfache Indexseiten und liefern diese an die Suchmaschinen?

Schritte zu ergreifen:

  • die Kombinationen verschiedener Paginierung Werte beseitigen in robots.txt
  • Index erstellen (vielleicht paginierte) Seiten für jeden Datensatz (Staat, Stadt, Veranstaltung, etc.)
  • ausblenden diese Seiten zu Benutzern, aber erlauben Sie robots.txt Zugang

Dies beseitigt einige Komplexität im Umgang mit Paginierung und Indizierung.

Als Referenz habe ich gerade diese genaue Lösung mit drei verschiedenen Paginierungsparametern gemacht und ich plane, es aus einer SEO Perspektive zu betrachten.