PHP

Убираем 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();
 	    }
 	}

Если в конец строки добавить index.php, то всё рушится:

Более наглядный пример подключения к файлам:
 	/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"]);

Этот способ работает, но его не следует применять! Может существуют и другие варианты, но мне первый больше нравится.
Добавлено: 24 Августа 2013 01:33:47 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...