Если вы успели заметить, то Zend Framework использует помощник вида baseUrl() для того, чтобы сформировать ссылку к CSS и другим статическим файлам. Но работа скрипта нарушается, если URL содержит строку index.php.
Предположим, что в layout.phtml подключение к CSS выглядит так:
<?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/site.css'); ?>
Это код метода baseUrl():
<?php
class Zend_View_Helper_BaseUrl
{
function baseUrl()
{
$fc = Zend_Controller_Front::getInstance();
return $fc->getBaseUrl();
}
}
Более наглядный пример подключения к файлам:
/zfproject/public/index.php/css/site.css
/zfproject/public/css/site.css.
Решение! Используйте mod_rewrite
Для решения проблемы просто воспользуйтесь mod_rewrite и добавьте строку в ваш файл .htaccess:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^/]+/)*index.php
RewriteRule ^index.php(.*)$ /zfproject/public$1 [R=301,L]
Ещё вариант, но похуже
В самом начале файла index.php измените REQUEST_URI:
$_SERVER["REQUEST_URI"] = str_replace('index.php','',$_SERVER["REQUEST_URI"]);
Этот способ работает, но его не следует применять! Может существуют и другие варианты, но мне первый больше нравится.