我在重写我的网址的.htaccess上遇到了问题。我创建了一个简单的动态网站,我不知道如何解决它。这是我的登录网址localhost/foss/然后成功登录后,用户将被重定向到localhost/foss/main
这是我的.htaccess的代码
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?p=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?p=$1
这是我的PHP,它根据p值处理包含文件。
<?php
$page = $_GET['p'];
$pages = array('home', 'inv_view', 'inv_add', 'inv_delete', 'inv_edit', 's_view', 's_add', 's_delete', 'change_pass', 'register', 'logout');
if (!empty($page))
{
if(in_array($page, $pages))
include $page . '.php';
else
echo 'Page not found!';
}
else
include 'home.php';
?>
这是工作正常的,唯一奇怪的事情是,在用户被重定向到localhost/foss/main之后,.htaccess将URL重写为localhost/foss/main/?p=main,但是当我选择一个链接,如localhost/foss/main/home,它将正常工作。 如何在用户登录后摆脱 ?p=main 并重定向到 localhost/foss/main
发生
此行为的原因mod_dir
因为模块在mod_rewrite
后运行,并在重写规则之后在目录main/
前面添加尾部斜杠,并且您获得的最终URL为localhost/foss/main/?p=main
。
要解决此问题,请在刷新标记中使用尾部斜杠:
header('refresh: 5; url = main/');