【问题标题】:Will using ModRewrite cause the web page to refresh?使用 ModRewrite 会导致网页刷新吗?
【发布时间】:2012-09-20 17:50:55
【问题描述】:

我的网站有问题,我一直不确定如何解决,只是因为它不是经常发生的。有时会,有时不会。

问题与会话和重定向有关。我正在做的是,当用户完成一项任务时,他们会被重定向。当他们被重定向时,$_SESSION 会设置一条消息,说明他们所做的事情已经完成。一旦加载了用户被重定向到的页面,并且没有显示消息,则包含该消息的会话变量将被取消设置,因为页面在最终显示给用户之前会刷新。奇怪的是,对于一个特定的重定向(当用户使用 Facebook Connect 登录时)它可以工作,但对于所有其他重定向它却不起作用。

我关于为什么会发生这种情况的最新想法是因为我正在使用 mod_rewrite。 mod_rewrite 能否导致页面在浏览器显示之前刷新?

这是我用于 URL 重写的代码:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php [L]

【问题讨论】:

  • 我认为这与 mod_rewrite 无关。发生了其他事情,您如何清除会话数据?当然,数据应该在会话中持续存在,直到您专门取消设置。
  • 您需要添加一些 PHP 代码来向我们展示发生了什么。听起来您没有在新页面上开始会话,或者,如果您没有在 header 函数之后调用 exit,那么您的脚本中的重定向可能会在重定向后取消设置该变量。
  • 事实证明在标头函数修复此问题后添加退出。我不知道在头球后退出是必要的。非常感谢!
  • 我继续并将其添加到我的答案中。随意接受这个作为答案。很高兴我能提供帮助。您可能已经猜到了,我之前也处理过完全相同的问题。

标签: php session mod-rewrite redirect


【解决方案1】:

没有。 mod_rewrite 告诉 apache 接受与您的规则匹配的传入请求(在向您发送响应之前),并将其路由到特定目的地。这就像邮件转发 - 您不会收到两次信件,您只是在不同的位置收到它。

更新以添加解决方案

header 调用重定向后,您可能会执行一些操作。在header之后添加对exit的调用,你的问题应该就解决了。

【讨论】:

  • 非常感谢,我会继续寻找其他解决方案。
猜你喜欢
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多