我在使用 .htaccess 重写我的 url 时遇到问题。我创建了一个简单的动态网站,但不知道如何修复它。这是我的登录 url 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 这样的链接,它会正常工作。在用户登录并重定向到 localhost/foss/main 后,我如何摆脱?p=main
最佳答案
之所以会出现这种行为,是因为 mod_dir
模块在 mod_rewrite
之后运行,并在目录 main/
之前添加了一个尾部斜杠重写规则,您将获得最终 URL 为 localhost/foss/main/?p=main
。
要解决此问题,请在刷新标签中添加尾部斜线:
header('refresh: 5; url = main/');
关于php - .htaccess 错误重定向到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27706914/