Ruby on rails Safari上的Rails重定向错误

Ruby on rails Safari上的Rails重定向错误,ruby-on-rails,ruby,ruby-on-rails-3,safari,routes,Ruby On Rails,Ruby,Ruby On Rails 3,Safari,Routes,我们正在Heroku上运行Rails 3.2.11应用程序,我们发现Mac/Safari浏览器存在间歇性问题。当用户单击某个链接或在Safari中手动输入链接时(例如,不带尾随斜杠),浏览器将返回404状态代码。 如果这发生在一个用户身上,不同Mac上的不同用户可以毫无问题地导航到相同的链接 如果用户随后添加尾部斜杠(例如),则链接将正常工作。它不仅会在第一次正常工作,而且在以后任何时候使用链接时都会继续正常工作。我的第一反应是责备Safari(某种程度上),并说原始请求(没有“/”)导致服务器

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


如果用户随后添加尾部斜杠(例如),则链接将正常工作。它不仅会在第一次正常工作,而且在以后任何时候使用链接时都会继续正常工作。

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


真正追踪它的唯一方法是观察服务器日志(或嗅探客户端通信量),看看客户端和服务器之间到底发生了什么。

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

如果您运行的是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;
}

你能发布部分服务器日志吗?或者来自产品控制器的代码?这看起来既不是Rails问题,也不是浏览器问题,而是您正在使用的http服务器可能存在的配置错误。你在应用程序前使用的是什么?有什么重写吗?我用的是Heroku,我不确定是哪一种。但这不是我的产品控制器中的代码,因为在其他控制器上也有随机发生的报告。在你的application.rb中,是否设置为:config.action\u controller.default\u url\u options={trailing\u slash:true}谢谢,我会试试。