9
votes

Plusieurs robots.txt pour les sous-domaines dans les rails

J'ai un site avec plusieurs sous-domaines et je veux que les Subrodains nommés soient différents de l'un de l'adresse www one.

J'ai essayé d'utiliser .htaccess, mais le Fastcgi ne le regarde pas. P >

Alors, j'essayais de configurer des itinéraires, mais il ne semble pas que vous ne puissiez pas faire une réécriture directe car chaque itinéraire a besoin d'un contrôleur: P>

map.connect '/robots.txt', :controller => ?, :path => '/robots.www.txt', :conditions => { :subdomain => 'www' }
map.connect '/robots.txt', :controller => ?,  :path => '/robots.club.txt'


0 commentaires

6 Réponses :


0
votes

Si vous ne pouvez pas configurer votre serveur HTTP pour le faire avant que la demande soit envoyée aux rails, je voudrais simplement configurer un contrôleur «robots» qui rend un modèle comme:

def show_robot
  subdomain = # get subdomain, escape
  render :text => open('robots.#{subdomain}.txt').read, :layout => false
end


0 commentaires

18
votes

En réalité, vous voulez probablement définir un type MIME dans mime_types.rb code> et le faire dans un réponse_to code> bloc de sorte qu'il ne le renvoie pas comme ' Texte / HTML ' CODE>:

class RobotsController < ApplicationController
  def robots
    subdomain = # get subdomain, escape
    robots = File.read(RAILS_ROOT + "/config/robots.#{subdomain}.txt")
    respond_to do |format|
      format.txt { render :text => robots, :layout => false }
    end
  end
end


2 commentaires

Merci d'avoir posté cela, cela m'a inspiré - j'ai simplifié cette technique un peu et mis à jour pour les rails 3. timbabwe.com/2011/08/...


Merci j'ai aimé votre solution. J'ai posté une solution Rails 3.x avec de légers changements.



11
votes

Pourquoi ne pas utiliser de rails intégrés à des vues intégrées?

dans votre contrôleur Ajoutez cette méthode: xxx

dans la vue Créer un fichier: app / vues /Static_pages/robots.txt.erb avec robots.txt content

dans routes.rb place: xxx < P> Supprimer le fichier /public/robots.txt

Vous pouvez ajouter une logique commerciale spécifique au besoin, mais de cette façon de ne lire aucun fichier personnalisé.


0 commentaires

0
votes

J'ai aimé la solution de Ta Tyree mais c'est très rails 2.x Centric alors voici ce que j'ai proposé pour le rail 3.1.x

mime_types.rb xxx > En ajoutant le format dans les itinéraires, vous n'avez pas à vous soucier de l'utilisation d'un bloqueur de réponse. routtes.rb xxx

J'ai ajouté un petit quelque chose de plus sur celui-ci. Les personnes de référencement se plaignaient du contenu dupliqué à la fois dans les sous-domaines et dans les pages SSL, donc j'ai créé deux fichiers de robots un pour la production et une pour la non-production qui va également être servi avec toutes les demandes SSL / HTTPS en production.

robots_controller.rb xxx


0 commentaires

1
votes

pour les rails 3:

Créer un contrôleur robotsController: p> xxx pré>

Créer des vues de robots (1 par sous-domaine): p>

  • Vues / robots / robots.subina1.txt li>
  • Vues / Robots / Robots.SubAnain2.txt Li>
  • etc ... li> ul>

    Ajouter un nouvel itinéraire dans Config / Routes.rb: (Notez l'option Format TXT) P>

    Mime::Type.register "text/plain", :txt
    


0 commentaires

2
votes

comme de rails 6.0 Cela a été grandement simplifié.

Par défaut, si vous utilisez l'option: simple, le texte est rendu sans en utilisant la disposition actuelle. Si vous voulez des rails pour mettre le texte dans le mise en page actuelle, vous devez ajouter la mise en page: une véritable option et utilisez le extension .Text.erb pour le fichier de mise en page. source xxx

dans routes.rb xxx


0 commentaires