【发布时间】:2017-12-06 05:55:38
【问题描述】:
在我添加 .htaccess 文件之前一切正常。我想要做的是将我的所有用户路由到他们的个人资料页面。所以 www.darudude.com/user1 路由到 www.darudude.com/userinfo.php?user=user1
我的 .htaccess 文件如下:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ userinfo.php?user=$1 [L,QSA]
但是自从我添加了这个之后,它就中断了我的会话。在每个页面上,我都有一个初始化会话,并且会话存储引用者。这是处理重要部分的代码。
if(isset($_SESSION['url'])){
$this->referrer = $_SESSION['url'];
}else{
$this->referrer = "/index.php";
}
//this echo is used to debug why this thing isn't working!!
echo "<script>alert('".$this->referrer."');</script>";
/* Set current url */
$this->url = $_SESSION['url'] = $_SERVER['PHP_SELF'];
然后我使用这段代码返回到原始页面:
header("Location: ".$session->referrer);
因此,例如,如果没有 .htaccess 文件,如果我通过其中一个页面登录,一切正常,我会被重定向回我登录的页面(即,如果我从 index.php 登录,我会被重定向回index.php;如果是 faq.php,我会被重定向回 faq.php)。使用 .htaccess 文件,我不断被发送到 /userinfo.php 导致我发现我的重写器有问题
这是它应该如何工作的:
index.php 加载。 $_SESSION['url'] 设置为 index.php
制定了登录表单,其操作重定向到 process.php
process.php $session->referrer 是从 $_SESSION['url']
设置的
确认登录后,页面应重定向使用: header("Location: ".$session->referrer);
这就是它最初的工作方式,没有任何问题。
但是,在创建 .htaccess 之后,它似乎将我重定向到 userinfo.php。我认为这与我的规则有关。
有什么想法吗?
【问题讨论】:
-
我想看看原来设置
$_SESSION['url']的代码 -
第二个代码块的最后一行
标签: php .htaccess mod-rewrite