【问题标题】:Rails Redirect Error on SafariSafari上的Rails重定向错误
【发布时间】:2015-02-09 16:10:03
【问题描述】:

我们正在 Heroku 上运行 Rails 3.2.11 应用程序,我们看到 Mac/Safari 浏览器出现间歇性问题。当用户单击链接或将链接手动输入到 Safari 中时(例如 http://myapp.com/product/1),浏览器会返回 404 状态代码。 如果这发生在一个用户身上,不同 Mac 上的不同用户可以毫无问题地导航到相同的链接。

如果用户随后添加了斜杠(例如http://myapp.com/product/1/),则链接将正常工作。它不仅在第一次正常工作,而且在他们之后使用该链接的任何时候都将继续正常工作。

【问题讨论】:

  • 您可以发布部分服务器日志吗?还是产品控制器的代码?
  • 这看起来既不是 Rails 问题也不是浏览器问题,而是您使用的 http 服务器可能配置错误。你在你的应用程序前面使用什么?是否有任何重写?
  • 我正在使用 Heroku,否则我不确定。不过,这不是我的产品控制器中的代码,因为有报告称它也在其他控制器上随机发生。
  • 在您的 application.rb 中,是否设置为:config.action_controller.default_url_options = { trailing_slash: true }
  • 谢谢,我试试看。

标签: ruby-on-rails ruby ruby-on-rails-3 safari routes


【解决方案1】:

我的第一反应是责怪 Safari(在某种程度上)并说原始请求(没有“/”)导致来自服务器的重定向,而 Safari 不知何故错误地遵循了该重定向。

真正追踪它的唯一方法是查看服务器日志(或嗅探客户端流量)以了解客户端和服务器之间真正发生的事情。

【讨论】:

    【解决方案2】:

    解决方案似乎是强制使用斜杠。根据您的服务器设置,您可以添加一些重写规则。

    如果你运行的是 apache,它看起来像这样:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !example.php
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]
    

    对于 nginx 来说是

    server {
        listen 80;
        server_name www.mysite.com;
        rewrite ^(.*[^/])$ $1/ permanent;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多