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)
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'
:
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
...
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:
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.
Für Schienen 3:
Erstellen Sie einen Controller RobotsController:
%Vor%Erstellen Sie Roboteransichten (1 pro Subdomain):
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.
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.
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 habemime_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%Tags und Links ruby ruby-on-rails