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

时间:2014-12-30 14:07:12

标签: php apache .htaccess mod-rewrite

我有.htaccess的问题,重写我的网址。我创建了一个简单的动态网站,我不知道如何解决它。这是我的登录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这样的链接它会正常工作。用户登录后如何摆脱?p = main并重定向到localhost / foss / main

1 个答案:

答案 0 :(得分:0)

发生此行为的原因是因为mod_dir模块正在mod_rewrite之后运行,并且在重写规则之后在目录main/前面添加了一个尾部斜杠,并且您获得的最终URL为{{ 1}}。

要解决此问题,请在刷新代码中添加一个斜杠:

localhost/foss/main/?p=main