Я работаю на сервере общего хостинга, настраивая что-то, что нормально работало на моем локальном хосте, и мне любопытно, что вызывает такое поведение.Я перенаправляю URL с Apache и mod_rewrite на фронт-контроллер с:
RewriteEngine On
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
#Redirect to front controller
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
На index.php у меня есть простая настройка проверки для целей отладки:
if(isset($_SERVER['PATH_INFO']))
{
echo $_SERVER['PATH_INFO'];
}
else
{
echo "No Path";
}
die;
Visiting http://example.com/testing выводит «Нет пути»
Посещение http://example.com/index.php/testing выводит / тестирует
Это перенаправление работало, как и предполагалось, на моем локальном хосте с http://example.com/testing выводом «/ testing»
Кто-нибудь знает, что может быть причиной этого?Есть ли более общий способ выполнения этого перенаправления, менее подверженный выдаче с хоста на хост?
РЕДАКТИРОВАТЬ:
Вывод $_SERVER['PATH_INFO'], $_SERVER['ORIG_PATH_INFO'], $_SERVER['PHP_SELF'], $_SERVER['REQUEST_URI']
соответственно показывает:
path:
orig: /testing
self: /index.php
uri: /testing
Какая обработка выполняется, чтобы вызвать это?Является ли ORIG_PATH_INFO более надежным?Также кажется, что REQUEST_URI также точен, это более подходящая переменная?