PHP / Apache: GET-запрос не существует? - PullRequest
0 голосов
/ 17 октября 2010

В моем файле .htaccess в корне моего сайта есть следующее:

Options -Indexes

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

В моем скрипте PHP при использовании $ _GET ['route'] я получаю следующую ошибку:

Notice: Undefined index: route

Я не понимаю, почему это не работает?Я использовал этот код в прошлом на предыдущем веб-сайте для создания дружественных URL-адресов, и PHP-скрипт получил значение запроса GET, но, похоже, он воспроизводится сейчас: /

Когда я делаю это вручную, как1009 *http://localhost/index.php?route=hmm ошибка исчезает, и я могу получить значение $ _GET ['route']

Что я делаю не так?Спросите, нужна ли вам дополнительная информация!Спасибо за чтение.

1 Ответ

0 голосов
/ 18 октября 2010

Я использую это для перезаписи URI (маршрутизации):

Options +FollowSymLinks
IndexIgnore */*
# Turn on the RewriteEngine
RewriteEngine On
# Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

И анализирую это с помощью:

class Dispatcher {
    [snip]
    private static function parse_uri() {
        if (self::$uri_parsed === false) {
            // Clean URI
            $uri = preg_replace('~|/+$|/(?=/)~', '', $_SERVER['REQUEST_URI']);

            // Strip get variables from request
            $get_position = strpos($uri, '?');
            if ($get_position !== false) {
                $striped_get = substr($uri, 0, $get_position);
            } else {
                $striped_get = $uri;
            }

            // Get the file and directory of the request
            if (strstr($striped_get, '.') != false) {
                // Strip the file from the URI
                $slash_position = strrpos($striped_get, '/');
                if ($slash_position !== false) {
                    $striped_file = substr($striped_get, 0, $slash_position + 1);
                } else {
                    $striped_file = $striped_get;
                }
                self::$command = $striped_file;
                self::$file    = substr($striped_get, strlen(self::$command));
            } else {
                self::$command = $striped_get;
                self::$file    = '';
            }
            // Trim slashes and replace dashes with underscores
            self::$command = str_replace('-', '_', trim(self::$command, '/'));

            if (DEBUG) {
                // Log the results
                Logger::log('Command: '.self::$command, self::LOG_TYPE);
                Logger::log('File: '.(self::$file ? self::$file : 'N/A'), self::LOG_TYPE);
            }

            self::$uri_parsed = true;
        }
    }
    [snip]
}
...