使用Apache mod_rewrite循环错误

时间:2016-08-25 09:06:20

标签: php apache .htaccess http mod-rewrite

我需要Apache2 mod_rewrite的帮助。下面是我的.htaccess文件:

AddDefaultCharset utf-8
php_flag magic_quotes_gpc Off
php_flag display_errors on
php_flag display_startup_errors on
Options -Indexes
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200
RewriteEngine on 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ index.php

在php代码中我使用:

header('Location: /404', true, 404);

当我写这样的网址时:

https://localhost/somecontroller

PHP函数:

public function run() {
    $URL = explode('/', $_SERVER['REQUEST_URI']);
    if (@$URL[1]) {
        //Create controllers name from url(Controller + Name);
        $controllerName = 'Controller' . ucfirst($URL[1], 1); //strtoupper(substr($URL[1], 0, 1)) . substr($URL[1], 1);
    } else {
        $controllerName = 'ControllerIndex';
    }

    if (@$URL[2]) {
        //Create actions name from url(action + Name)
        $actionName = 'action' . ucfirst($URL[1], 1);
    } else {
        $actionName = 'actionDefault';
    }

    if (@$URL[3]) {
        $param = $URL[3];
    }
    $Controller = new $controllerName(/*$this->DB*/);
    if (method_exists($Controller, $actionName)) {
        if (@$param) {
            if (@$param == '') {
                header('Location: /404', true, 404);
                exit();
            } else {
                @$Controller->$actionName($this->DB, $param);
            }
        } else {
            @$Controller->$actionName($this->DB);
        }
    } else {
        header('Location: /404', true, 404);
        exit();
    }
}

我得到了ERR_TOO_MANY_REDIRECTS。有人可以帮帮我吗?

0 个答案:

没有答案