我有一个ASP.NET“桌面友好”网站(www.company.com)和一个单独的“移动友好”网站(m.company.com)。这两个站点都有重定向规则,可以尝试检测设备是桌面设备还是移动设备,并将请求重定向到相应的站点。
移动网站上有“查看完整网站”链接。这将为父域(.company.com)设置会话cookie(值为“1”),并将用户发送到桌面站点。当桌面站点上的重定向系统检测到cookie(由于cookie属于父域而可以读取)时,它会跳过将移动设备重定向到移动站点的常规规则。
这一切都很好......除了iPhone上的Safari!
仅对于此平台,单击链接后,您不会被重定向到桌面站点,并且移动站点中的所有进一步导航都会导致错误“Safari无法打开页面,因为发生了太多重定向”。如果您转到iPhone的Safari设置并单击清除Cookies,则恢复常态,但只要单击“查看完整站点”链接,问题就会重新出现。
我首先想到的是重定向系统正在发出交替的301重定向 - 即创建重定向循环。但是,如果附加了调试器,我可以看到这没有发生。没有发出请求和重定向流 - 实际上不是一个!! 这几乎就像Safari正在向自己发布重定向指令。
这似乎是iPhone with dozens of reports on various user forums of it happening on many sites上Safari的常见问题。大多数用户报告它只发生在他们的iPhone上,而不是在他们的iPad上。
由于服务器似乎没有对这个问题负责,我正在摸不着头脑做什么!到目前为止,我唯一的想法是隐藏iPhone的“查看完整网站”链接,或尝试使用基于非cookie的重定向旁路。
任何人都可以解释原因和/或解决方案吗?
答案 0 :(得分:0)
你应该查看.htaccess文件。
我在.htaccess中有一个简单的重定向写入,阻止在Safari上加载。就这样:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
虽然这不是一个修复,但它是一个补丁。