Obadałem problem. Robisz dobrze, ale u mnie jak zrobię tak samo jak Ty to Zend szaleje (przez nazwę hosta na początku), ACL się wysypuje, bo Request źle zwraca nazwę kontrolera i akcji itd.
Sposób jaki wymyśliłem, aby to obejść - napisałem własny router (kto wie, może mi się kiedyś przyda), który pomaga Zendowi w ogarnięciu co jest czym w linku:
class My_Router extends Zend_Controller_Router_Rewrite
{
public function route(Zend_Controller_Request_Abstract $request)
{
parent::route($request);
$host = (isset($_SERVER['HTTPS']) ?
'https://' : 'http://') . $_SERVER['SERVER_NAME']; $pathParts = explode('/', $_SERVER['REQUEST_URI']);
if (!isset($controllerAndAction[0
])) { $controllerAndAction[0] = $this->getRoute('default')->getDefault('controller');
}
if (!isset($controllerAndAction[1
])) { $controllerAndAction[1] = $this->getRoute('default')->getDefault('action');
}
$request->setControllerName($controllerAndAction[0]);
$request->setActionName($controllerAndAction[1]);
}
}
A w Bootstrapie mam coś takiego:
protected function _initBaseUrlAndRoutes()
{
/**
* @var Zend_Controller_Front
*/
$front = $this->bootstrap('frontcontroller')->getResource('frontcontroller');
$front->setBaseUrl('http://localhost/projekt/public/'); //albo "mojhost/zf/"
$front->setRouter(new My_Router());
}
U mnie działa - helper baseUrl zwraca pełną ścieżkę, a i na ACLu się nie wysypuje.
Teoretycznie powinno się dać zrobić to także za pomocą mod_rewrite - ustawić RewriteBase, ale nie znam się na tyle na mod_rewrite, żeby się wypowiadać.