Safari上的Rails重定向错误

时间:2015-02-09 16:10:04

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

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

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

2 个答案:

答案 0 :(得分:1)

我的第一直觉是责怪Safari(有点),并说原始请求(没有' /')导致服务器重定向,Safari以某种方式错误地跟踪。

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

答案 1 :(得分:0)

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

如果你正在运行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;
}