0

嘿,我搜索了所有相关问题,但没有找到适合我的案例的任何解决方案。

我有一个带有如下网址的脚本:

htt://www.example.com/index.php/dosomthing/parametrs

现在我用这个:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

然后在我的默认控制器中检查用户是否登录,如果没有,我使用此类函数将其重定向到登录控制器:

function redirect($uri = '', $method = 'location', $http_response_code = 302)
    {
        $uri = $this->config['home_url'] . ltrim($uri, '/');

        switch($method)
        {
            case 'refresh'  : header("Refresh:0;url=".$uri);
                break;
            default         : header("Location: ".$uri, TRUE, $http_response_code);
                break;
        }

        $this->dija = null;

        exit;
    }

它适用于本地主机,但在主机上它不起作用并导致重定向循环,我真的很沮丧,不知道该怎么做。

4

1 回答 1

0

将您的 RewriteRule 更改为:

RewriteRule ^(.*)$ index.php?$1 [L]

在旧情况下,您总是重写到相同的旧 url,只是再次添加 index.php 部分,因为没有名为“index.php/”的文件

于 2013-02-05T18:18:06.880 回答