1

我有一个 ASP.NET“桌面友好”站点 (www.company.com) 和一个单独的“移动友好”站点 (m.company.com)。两个站点都有重定向规则,尝试检测设备是台式机还是移动设备,并将请求重定向到适当的站点。

移动网站上有一个“查看完整网站”链接。这会为父域 (.company.com) 设置会话 cookie(值为“1”)并将用户发送到桌面站点。当桌面站点上的重定向系统检测到 cookie(它可以读取,因为 cookie 属于父域)时,它会跳过将移动设备重定向到移动站点的通常规则。

这一切都很好......除了iPhone上的Safari!

仅对于此平台,一旦单击链接,您就不会被重定向到桌面站点,并且移动站点中的所有进一步导航都会导致错误“Safari 无法打开页面,因为发生了太多重定向”。如果您转到 iPhone 的 Safari 设置并单击“清除 Cookie”,则恢复正常,但一旦您单击“查看完整站点”链接,问题就会再次出现。

我的第一个想法是重定向系统发出交替的 301 重定向 - 即创建一个重定向循环。但是,在附加调试器的情况下,我可以看到这并没有发生。没有发出请求和重定向流 -实际上没有一个!就好像 Safari 正在向自己发出重定向指令。

这似乎是 iPhone 上 Safari 的一个常见问题,在许多网站上的各种用户论坛上都有数十个关于它的报告。大多数用户报告说它只发生在他们的 iPhone 上,而不是在他们的 iPad 上。

由于服务器似乎不对这个问题负责,我正在为该怎么做而摸不着头脑!到目前为止,我唯一的想法是隐藏 iPhone 的“查看完整站点”链接,或者尝试使用基于非 cookie 的重定向绕过。

谁能解释原因和/或解决方案?

4

1 回答 1

0

您应该查看 .htaccess 文件。

我在 .htaccess 中有一个简单的重定向写入,它阻止在 Safari 上加载。像这样:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

虽然,这不是一个修复,它是一个补丁。

于 2015-09-29T13:11:56.123 回答