我们正在Heroku上运行Rails 3.2.11应用程序,我们发现Mac / Safari浏览器存在间歇性问题。当用户单击链接或手动将链接输入Safari而没有斜杠(例如http://myapp.com/product/1)时,浏览器将返回404状态代码。 如果这发生在一个用户身上,则不同Mac上的其他用户可以毫无问题地导航到相同的链接。
如果用户随后添加了一个尾部斜杠(例如http://myapp.com/product/1/),那么该链接将正常工作。它不仅会在第一次正常工作,而且在他们之后使用链接的任何时候都会继续正常工作。
答案 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;
}