【发布时间】:2017-02-01 00:06:51
【问题描述】:
我的 .htaccess 文件将我的页面重定向到 https 连接,并在需要时进行更多重定向。
但是,我有一个脚本可以检查是否设置了会话 (PHP)。如果是这样,我执行视觉操作并取消设置会话。但是,当 .htaccess 启动其重定向时,我会看到一毫秒的视觉效果,而在来自 .htaccess 的新重定向上,效果消失了,因为会话已经取消设置...
我希望它足够清楚,退出一个奇怪的故事,但是是的......它似乎直到现在才发生:(
提前感谢您的帮助!
附:结构简单:
1)。正在加载页面 -> 进行可视化和取消设置会话
2)。 .HTACCESS 通过重定向到 https 来启动
3)。正在加载页面 -> 没有视觉效果,因为第一步中已经未设置会话
【问题讨论】:
-
htaccess 将在 php 被调用之前被处理。如果 htaccess 重定向,则没有为该请求加载 php,浏览器被重定向,然后对重定向到的页面发出新请求。
-
另外,请记住,对 http 和 https 的请求是完全独立的请求,就好像它们是完全不同的服务器一样。如果您通过 http 创建了会话,则通过 https 运行的站点将无法使用该会话。通过 http 设置的会话 cookie 不会通过 https 传递,因此会话不会恢复。
-
乔纳森,感谢您的快速回复。但是,我几乎可以肯定我的页面会在重定向之前加载。我的 .htaccess 文件很好,因为 safari 按预期工作。但是,在重定向之前加载页面似乎是 chrome 和 Firefox 中的一个错误......
-
那么执行重定向的不是 htaccess 文件。你能提供一个 htaccess 文件,也许是初始加载页面(minimal reproducible example)。如果您在重定向之前看到页面加载,我会假设是正在加载的页面进行重定向(元标记或 javascript),而不是 htaccess。你没有提供任何代码来检查,所以我们只是根据你所说的你正在做的事情来猜测实际发生的事情。
-
另外,您可以尝试在有问题的浏览器中打开开发人员工具,转到网络选项卡,打开保留重定向选项并点击预期的站点。您可以查看每个请求以及发送的标头和内容,并实际查看重定向的内容,而不是仅仅猜测和假设。
标签: php .htaccess session redirect