Mehrere robots.txt für Sub-Domains in Rails

8

Ich habe eine Site mit mehreren Subdomains, und ich möchte, dass sich die benannten Subdomains robots.txt vom www unterscheiden.

Ich habe versucht, .htaccess zu verwenden, aber das FastCGI sieht es nicht an.

Also habe ich versucht, Routen einzurichten, aber es scheint nicht, dass Sie nicht direkt umschreiben können, da jede Route einen Controller benötigt:

%Vor%

Was wäre der beste Weg, um dieses Problem anzugehen?

(Ich verwende das Plugin request_routing für Subdomains)

    
Christopher 01.05.2010, 04:27
quelle

5 Antworten

17

Eigentlich möchtest du wahrscheinlich einen Mime-Typ in mime_types.rb setzen und in einem respond_to -Block tun, damit er nicht als 'text/html' :

zurückgegeben wird %Vor%

Dann würden Ihre Routen so aussehen:

%Vor%

Für rails3:

%Vor%

und der Controller so (drücke die Datei (en) wo du willst):

%Vor%

auf die Gefahr hin, es zu übersteuern, könnte ich sogar versucht sein, die Dateileseoperation zwischenzuspeichern ...

Oh ja, Sie werden wahrscheinlich die vorhandene 'public/robots.txt' -Datei entfernen / verschieben müssen.

Deutliche Leser werden feststellen, dass Sie RAILS_ENV für subdomain ...

leicht ersetzen können     
TA Tyree 27.05.2010, 17:33
quelle
10

Warum sollten Sie nicht in Ansichten eingebaute Schienen verwenden?

Fügen Sie in Ihrem Controller diese Methode hinzu:

%Vor%

Erstellen Sie in der Ansicht eine Datei: app/views/static_pages/robots.txt.erb mit dem Inhalt von robots.txt

In routes.rb place:

%Vor%

Löschen Sie die Datei /public/robots.txt

Sie können nach Bedarf eine spezifische Geschäftslogik hinzufügen, aber auf diese Weise lesen wir keine benutzerdefinierten Dateien.

    
ramigg 14.11.2012 10:45
quelle
1

Für Schienen 3:

Erstellen Sie einen Controller RobotsController:

%Vor%

Erstellen Sie Roboteransichten (1 pro Subdomain):

  • Ansichten / robots / robots.subdomain1.txt
  • Ansichten / robots / robots.subdomain2.txt
  • usw. ...

Fügen Sie eine neue Route in config / routes.rb hinzu: (beachten Sie die Option: txt format)

%Vor%

Und natürlich sollten Sie das Format: txt in config / initializers / Mime_types.rb deklarieren:

%Vor%

Ich hoffe, es hilft.

    
levandch 12.04.2013 15:31
quelle
0

Wenn Sie Ihren http-Server dazu nicht konfigurieren können, bevor die Anfrage an die Rails gesendet wird, würde ich einfach einen 'robots' Controller einrichten, der eine Vorlage wie folgt rendert:

%Vor%

Je nachdem, was Sie erreichen möchten, können Sie auch eine einzelne Vorlage anstelle einer Reihe verschiedener Dateien verwenden.

    
jdeseno 01.05.2010 15:38
quelle
0

Ich mochte TA Tyrees Lösung, aber es ist sehr Rails 2.x centric, also hier ist, was ich für Rail 3.1.x

gefunden habe

mime_types.rb

%Vor%

Wenn Sie das Format in den Routen hinzufügen, müssen Sie sich keine Gedanken darüber machen, ob Sie einen respond_to-Block im Controller verwenden. routes.rb

%Vor%

Ich habe ein kleines Extra hinzugefügt. Die SEO-Leute beschwerten sich über doppelte Inhalte sowohl in Subdomains als auch in SSL-Seiten, also habe ich zwei Roboterdateien erstellt, eine für Produktion und eine für Nichtproduktion, die auch mit allen SSL / HTTPS-Anforderungen in der Produktion bedient wird.

robots_controller.rb

%Vor%     
luis.madrigal 20.12.2012 19:16
quelle

Tags und Links