Перенаправить 'myapp.com' на 'www.myapp.com' в направляющих, не используя htaccess?

27
задан JJJ 2 October 2016 в 07:45
поделиться

5 ответов

Возможно, что-то вроде этого добилось бы цели:

class ApplicationController < ActionController::Base
  before_filter :check_uri

  def check_uri
    redirect_to request.protocol + "www." + request.host_with_port + request.request_uri if !/^www/.match(request.host)
  end
end
30
ответ дан carson 28 November 2019 в 05:14
поделиться

Вот несколько различных путей:

 head :moved_permanently, :location => ‘http://www.newdomain.com’

другой:

def rails_301
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.newdomain.com"
end 
0
ответ дан Stepan Mazurov 28 November 2019 в 05:14
поделиться

Ответ Карсона отлично работает.

Вот код, чтобы пойти другим путем (www -> no www)

before_filter :check_uri

def check_uri
  if /^www/.match(request.host)
    redirect_to request.protocol + request.host_with_port[4..-1] + request.request_uri 
  end
end
9
ответ дан 28 November 2019 в 05:14
поделиться

У меня это отлично сработало. Я сделал одно небольшое дополнение, так как хотел, чтобы такое поведение происходило только в моей производственной среде:

def check_uri
  redirect_to request.protocol + "www." + request.host_with_port + request.request_uri if !/^www/.match(request.host) if Rails.env == 'production'
end
2
ответ дан 28 November 2019 в 05:14
поделиться

Я знаю, что на это есть ответ, но я думал, что все остальные должны знать о решении CodeRack: Canonical Host. Это действительно хорошо, поскольку позволяет выполнять перенаправления, специфичные для env. http://coderack.org/users/tylerhunt/middlewares/6-canonical-host

1
ответ дан 28 November 2019 в 05:14
поделиться
Другие вопросы по тегам:

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