使用htaccess的PHP重定向位置
在我的一个页面中,管理员是允许的,但是,如果没有设置会话,我会使用头将他们重定向到index.php,并且该方法可以工作 如果我将index.php替换为home,这是针对htaccess的,它将其更改为index.php,但在浏览器中会出现错误 这项工作:使用htaccess的PHP重定向位置,php,session,.htaccess,redirect,Php,Session,.htaccess,Redirect,在我的一个页面中,管理员是允许的,但是,如果没有设置会话,我会使用头将他们重定向到index.php,并且该方法可以工作 如果我将index.php替换为home,这是针对htaccess的,它将其更改为index.php,但在浏览器中会出现错误 这项工作: if(!isset($_SESSION['MEMBER'])){ header("Location: index.php"); } 这不起作用: if(!isset($_SESSION['MEMBER'])){ header("Locat
if(!isset($_SESSION['MEMBER'])){ header("Location: index.php"); }
这不起作用:
if(!isset($_SESSION['MEMBER'])){ header("Location: home"); }
htaccess:
RewriteRule ^home$ index.php
Firefox中的错误:
页面未正确重定向
Firefox检测到服务器正在重定向此请求
用一种永远不会改变的方式来称呼
完成。
此问题有时可能是由于禁用或拒绝接受导致的
饼干。
怎么了?如何使用此方法?您正在将index.php重定向到php文件中的home,并将home重定向到.htaccess中的index.php。Firefox告诉你有一个无限的重定向循环 编辑: php和home是同一件事,因此重定向到其中一个将导致无限循环。您需要这样做:
#.htaccess
RewriteRule ^home$ index.php # public page
RewriteRule ^members$ members.php # member only page
然后在index.php中
# index.php
if(isset($_SESSION['MEMBER'])){
header("Location: members");
exit;
}
您已经创建了一个无限循环。 当PHP执行以下代码时:
if(!isset($_SESSION['MEMBER'])){ header("Location: home"); }
它将浏览器重定向到/home
。
但是在
.htaccess
中,您将URL重写为/index.php
。这会再次使PHP执行上述PHP代码。相反。下面是如何在.htaccess
重定向中携带PHP会话id的
RewriteEngine On
RewriteRule ^(.*)$ /home/ [QSA,L,E=REDIRECT_URL:$1]
注意最后一点
[QSA,L,E=REDIRECT\u URL:$1]
所以我不能在php头中使用“home”?你可以,你不能重定向回自己。@Wayne:你可以在php头中使用home
,但一定要更改$\u SESSION['MEMBER']
的值以防止无限循环。