我们有一个网站,我们的域名在dnsimple上,服务器在heroku上。我们在heroku和amp;上配置了ssl所有必要的步骤。 dnsimple。
当您在网址栏中输入这4个网址中的任意一个时,它就能正常工作。
但问题是,当我在谷歌搜索my website
并点击链接时,它并没有打开,特别是与Internet Explorer&苹果浏览器。它给出了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个网站添加到谷歌搜索控制台;
https://www.example.com
https://example.com
http://www.example.com
http://example.com
btw已超过24小时。对于Internet Explorer,我尝试删除历史记录并刷新dns配置。仍然没有运气。
修改 没有支票作为推荐人。但是有一个代码可以显示或不显示应用程序控制器,但我不认为这是相关的;
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 :(得分:1)
问题是由以下代码片段引起的:
url = Rails.application.routes.recognize_path(request.referrer)
@last_controller = url[:controller]
@last_action = url[:action]
据我记忆(我想,鉴于最近版本的Rails中recognize_path
was removed)recognize_path
会引发路由错误,以防无法找到路径。
您正在将任意字符串传递给该函数,但该函数仅识别路由器内部描述的路径。
request.referrer
会返回3种不同类型的网址:
除了第三个以外的所有情况,recognize_path
都会引发错误。该错误将被默认的Rails处理程序捕获并显示为404(无法识别的路由导致生产中的404)。
我不确定location_action_name
应该做什么,但是现在实现它非常脆弱,在大多数情况下会导致你的应用中产生404响应。