Я пытаюсь создать структуру MVC, когда заметил, что переменная $ _SERVER ['PATH_TRANSLATED'] делает следующее:
[PATH_INFO] => / test / test2 / test3
[PATH_TRANSLATED] => перенаправление: /index.php/test/test2/test3/test2/test3
- Перенаправление без изменения URL-адреса браузера
- Использование mod-rewrite для передачи маршрута index.php
- mod_rewrite работает на localhost, но не на сервере
- как перенаправить в подпапку из корня, переписать ссылку подпапки, чтобы выглядеть как root, а затем добавить некоторые исключения в htaccess?
- Субдомены CakePHP с htaccess
Это когда я получаю доступ к файлу 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 и произвел тот же самый повторяющийся результат.
Если вы используете mod_rewrite
, то чтение значения PATH_TRANSLATED
будет использоваться в вашем скрипте, так как оно укажет на файл или путь небытия. Вы должны использовать PATH_INFO
в своем index.php
чтобы узнать URI, который был запрошен пользователем.
Например, вы можете взглянуть на класс Router CodeIgniter . CodeIgniter может использовать несколько способов получения параметров URI: PATH_INFO
, QUERY_STRING
, REQUEST_URI
и ORIG_PATH_INFO
.
Если вам все еще любопытно странное поведение вашего Apache, возможно, выкапывание в журнал доступа покажет ключ к виновнику. Однако, если вы не используете эту переменную, просто забудьте ее. Он служит другой цели, и ваш MVC не собирается его использовать.