Убираем index.php из URL

Если вы успели заметить, то 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"]);

Этот способ работает, но его не следует применять! Может существуют и другие варианты, но мне первый больше нравится.
Теги:
index.php
Добавлено: 10 Мая 2018 07:49:25 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...