Несколько robots.txt для субдоменов в направляющих

Я думаю, что ваш код выглядит хорошо, но IIS не отправляет объект заголовка в одиночку с ожидаемым ответом. Убедитесь, что IIS настроен правильно.

  • Конфигурирование IIS6
  • Настройка IIS7

Если CORS не работает для вашей конкретной проблемы, возможно, jsonp - еще один возможный способ.

8
задан John Saunders 9 May 2010 в 01:18
поделиться

3 ответа

На самом деле, вы, вероятно, захотите установить тип mime в mime_types.rb и сделать это в response_to ], чтобы он не возвращал его как 'text / html' :

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

Тогда ваши маршруты будут выглядеть так:

map.robots '/robots.txt', :controller => 'robots', :action => 'robots'

Для rails3:

match '/robots.txt' => 'robots#robots'

и контроллера примерно так ( поместите файл (ы) куда хотите):

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

рискуя перестроить его, у меня может даже возникнуть соблазн кэшировать операцию чтения файла ...

О, да, вам почти наверняка придется удалите / переместите существующий файл 'public / robots.txt' .

Проницательные читатели заметят, что вы можете легко заменить RAILS_ENV на субдомен ...

17
ответ дан 5 December 2019 в 05:55
поделиться

С направляющие 6.0 это было значительно упрощено.

По умолчанию, если Вы используете: простая опция, текст представляется, не используя текущий макет. Если Вы хотите, чтобы направляющие поместили текст в текущий макет, необходимо добавить расположение: истинная опция и использование .text.erb расширение для файла расположения. Источник

class RobotsController < ApplicationController 
  def robots
    subdomain = request.subdomain # Whatever logic you need
    robots = File.read( "#{Rails.root}/config/robots.#{subdomain}.txt")
    render plain: robots
  end
end

В routes.rb

get '/robots.txt', to: 'robots#robots'
0
ответ дан 5 December 2019 в 05:55
поделиться

Если вы не можете настроить свой http-сервер для этого до того, как запрос будет отправлен на рельсы, я бы просто настроил контроллер «роботов», который отображает шаблон типа:

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

В зависимости от того, что вы пытаетесь выполнить, вы также можете использовать один шаблон вместо кучи разных файлов.

0
ответ дан 5 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: