php - .htaccess 错误重定向到另一个目录

标签 php apache .htaccess mod-rewrite

我在使用 .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/

相关文章:

php - 我在代码中找不到错误

php - 条件下载页面内容(js、css)

javascript - 从 https 父窗口访问 iframe 中的 http

php - 在 .htaccess 中使用 AddType .css 时浏览器不解释 .css 文件

php - 我的 UNION ALL 查询需要建议

php - 为什么 Outlook 电子邮件将我的电子邮件更改为扩展名为 .dat 的附件?

php - 错误日志 : PHP Warning: A non-numeric value encountered

java.lang.Exception : java. lang.NoClassDefFoundError:org/apache/lucene/util/OpenBitSet

java - 如何在 php 中为 windows 创建 localhost 域管理?

php - 如何在不需要身份验证时从 URL 检索尝试的 $_SERVER ['REMOTE_USER' ]