2016-11-02 2 views
0

У нас есть веб-сайт, и наш домен находится на dnsimple, а сервер находится на геройку. Мы настроили все необходимые шаги с помощью ssl как на heroku & dnsimple.Веб-сайт не открывается google search http to https

Когда вы вводите любой из этих 4-х URL-адресов, он работает.

Но проблема в том, что при поиске в google как my website и нажатии на ссылку, это не открытие, особенно с интернет-исследователем & сафари. Это дает ошибку 404.

Ошибка с консоли;

ActionController::RoutingError (No route matches "https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwiU0JX39YnQAhWJEiwKHSq2BpQQFggcMAA&url=https%3A%2F%2Fwww.example.com%2F&usg=AFQjCNFg0D1KFk0WGvYOfUoVzNm19KDBYw&bvm=bv.137132246,d.bGg"): 

Я добавил все 4 веб-сайта в консоль Google Search as;

https://www.example.com 
https://example.com 
http://www.example.com 
http://example.com 

Его более 24 часов кстати. Для Internet Explorer я попытался удалить историю и сбросить настройки dns. Еще не повезло.

EDIT: В качестве реферера нет проверок. Но есть код для показа заголовка или нет, как в контроллере приложения, но я не думаю, что это актуально;

before_filter :set_locale, :location_action_name 
def location_action_name 
    if !logged_in? 
     url = Rails.application.routes.recognize_path(request.referrer) 
     @last_controller = url[:controller] 
     @last_action = url[:action] 


    end 
    end 

EDIT2: Я удалил код ниже и нажал на Heroku теперь он работает. Но почему?

+0

Зачем нужна ваша маршрутизация, чтобы увидеть URL-адрес Google? Не имеет смысла, Google перенаправляет на вашу страницу при нажатии этой ссылки, но единственный способ, которым ваш сайт может иметь доступ к этому URL-адресу, - через реферер. Проверяет ли ваш сайт какие-либо проверки на основе реферера или другие подобные вещи? – CBroe

+0

отредактировал вопрос –

ответ

1

Проблема вызвана следующим фрагментом кода:

url = Rails.application.routes.recognize_path(request.referrer) 
    @last_controller = url[:controller] 
    @last_action = url[:action] 

Насколько я помню (и я думаю, учитывая, что recognize_pathwas removed в последних версиях Rails) recognize_path вызывает ошибку маршрутизации в этом случае он может Найти путь.

Вы передаете произвольные строки функции, но функция распознает только пути, описанные в маршрутизаторе.

request.referrer вернется 3 различных типов URL:

  1. пустой не: когда нет ссылающейся
  2. внешнего URL: когда посетитель щелкает в другом месте и достигает ваше приложение
  3. внутреннего URL: когда посетитель щёлкает в вашем приложении

Во всех случаях, кроме третьего, recognize_path поднимет ошибку. Ошибка будет улавливаться обработчиком Rails по умолчанию и отображается как 404 (непризнанный маршрут приводит к 404 в производстве).

Я не уверен, что должен делать location_action_name, но поскольку он реализован сейчас, он очень хрупок, и в большинстве случаев это приведет к возникновению 404 ответов в вашем приложении.