Почему $ _SERVER повторяется?

Я пытаюсь создать структуру MVC, когда заметил, что переменная $ _SERVER ['PATH_TRANSLATED'] делает следующее:

[PATH_INFO] => / test / test2 / test3
[PATH_TRANSLATED] => перенаправление: /index.php/test/test2/test3/test2/test3

Это когда я получаю доступ к файлу PHP по адресу http: //domain.tld/test/test2/test3
Обратите внимание, как он повторяется после / test /

Это мой .htaccess для перезаписи:

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

Есть идеи? Я попытался изменить правило RewriteRule, но ничего не изменилось. Переменная не так важна для того, что я пытаюсь сделать, но мне интересно, почему это происходит, и если у меня что-то неправильно сконфигурировано.

Информация о сервере:
Apache / 2.2.3
PHP 5.3.1

Изменить: эта переменная не повторяется в Lighttpd, поскольку она сообщает:

[PATH_INFO] => / test / test2 / test3
[PATH_TRANSLATED] => / home / kramer / public_html / test / test2 / test3

Поэтому я предполагаю, что это имеет какое-то отношение к Apache. Я также попробовал FastCGI под Apache и произвел тот же самый повторяющийся результат.

Related of "Почему $ _SERVER повторяется?"

Если вы используете mod_rewrite , то чтение значения PATH_TRANSLATED будет использоваться в вашем скрипте, так как оно укажет на файл или путь небытия. Вы должны использовать PATH_INFO в своем index.php чтобы узнать URI, который был запрошен пользователем.

Например, вы можете взглянуть на класс Router CodeIgniter . CodeIgniter может использовать несколько способов получения параметров URI: PATH_INFO , QUERY_STRING , REQUEST_URI и ORIG_PATH_INFO .

Если вам все еще любопытно странное поведение вашего Apache, возможно, выкапывание в журнал доступа покажет ключ к виновнику. Однако, если вы не используете эту переменную, просто забудьте ее. Он служит другой цели, и ваш MVC не собирается его использовать.