Linki mam tworzone dynamicznie dzięki implementacji odpowiedniej funkcji, którą rejestruję w systemie szablonów OPT, przez co może byc używana w plikach tpl.
Działa to mniej więcej na takiej zasadzie, że jako argumenty przesyłam nazwe kontrolera, akcję oraz parametry, a skrypt sam albo dodaje index.php do zwracanego adresu, albo nie - w zależności od wyniku metody systemowej, sprawdzającej czy mod rewrite jest załadowany.
Co do sytuacji pustej zmiennej, to oczywiście mam to uwzględnione, bo to przecież podstawowa sprawa

Potrzebna była jeszcze drobna poprawka. Ostatecznie wygląda to tak:
Kod
protected function setEnv()
{
$dirname = dirname($_SERVER['SCRIPT_NAME']);
if ($dirname === $this->_sep)
{
$to_replace = $this->_sep.'index.php';
}
else
{
$to_replace = array($dirname, $this->_sep.'index.php');
}
define('PATH_INFO', str_replace($to_replace, '', $_SERVER['REQUEST_URI']));
}
Takie kwestie jak index.php czy separator jako zmienna klasy to już kwestia podejścia do sprawy, więc przyjmijmy że to pomijamy

Śmiga aż miło, niestety nie na nginx. Czyli cała praca z przepisywaniem na marne. Okazuje się, że nginx nie przyjmuje niczego co jest po pliku.
Czyli przyjmuje: /index.php ale już nie index.php/ a tym bardziej nie index.php/ctrl/act/
Chyba trzeba dla tego serwera dac tradycyjne linki: index.php?page=ctrl&action=act. Jakieś inne pomysły?