Перейти к содержимому


- - - - -

Ошибка в базовом url


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 sabotage

sabotage

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 24.08.2008, 18:40

Меню генерируется с урлами следующего вида:
/index.html
/sub/page.html

Если прописать в конфиге урл, то вылетает ошибка.

Косяк вылазит из-за ошибки в функции public function getBaseUri () (\zengine\classes\zengine.php), непонятное преобразование с неопределенной переменной:

else {
$this->_baseuri = '/' . trim($baseuri, '/') . '/';
}

А вообще система интересная, респект.

#2 support

support

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 1 140 сообщений

Отправлено 25.08.2008, 06:47

Просмотр сообщенияsabotage (24.8.2008, 22:40) писал:

Косяк вылазит из-за ошибки в функции public function getBaseUri () (\zengine\classes\zengine.php), непонятное преобразование с неопределенной переменной:
Спасибо, исправили в 1.0.8. Кстати, почему прибегли к использованию этого параметра? Система в большинстве случаев может сама определить, находится ли она в папке или корне сайта. Автоматическое определение пути не сработало?

Просмотр сообщенияsabotage (24.8.2008, 22:40) писал:

А вообще система интересная, респект.


#3 sabotage

sabotage

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 25.08.2008, 09:26

Просмотр сообщенияsupport (25.8.2008, 9:47) писал:

Кстати, почему прибегли к использованию этого параметра?
Если должно самостоятельно определить $_SERVER['HTTP_HOST'], то да, на локалхосте не сработало. Да и возможности (пока незадокументированные) смотрел.

Еще одна трабла - если включить в конфиге engine.debug = on, то заголовки отправляются с опозданием и кодировка "ложится".
zengine.php (\zengine\classes\zengine.php)
		if (zengine::config()->get('engine.debug', false)) {
			echo '<pre>';
			echo 'Серверное время: ' . ZENGINE_NOW . "\n";
			if ($zpage) {
				echo 'Время публикации страницы: ' . $zpage->getProperty('publish') . "\n";
				echo 'Название страницы: ' . $zpage->getTitle();
			} else {
				echo 'Страница не найдена';
			}
			echo '</pre>';
		}

Решается переносом в ztemplate.php (\zengine\classes\ztemplate.php) и установкой  после:
		$this->charset = zengine::config()->get('engine.charset', 'utf-8');
		header('Content-Type: text/html; charset=' . $this->charset, true);


#4 support

support

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 1 140 сообщений

Отправлено 25.08.2008, 09:58

Просмотр сообщенияsabotage (25.8.2008, 13:26) писал:

Если должно самостоятельно определить $_SERVER['HTTP_HOST'], то да, на локалхосте не сработало. Да и возможности (пока незадокументированные) смотрел.
Переменная $_SERVER['HTTP_HOST'] должна определяться самим PHP и она используется в нескольких местах, где нужен абсолютный адрес. Функция getBaseUri() не должна возвращать абсолютный путь. Если Вы используете baseuri для определения полного пути с доменом (например, baseuri = http://localhost/), то это приведет к битым ссылкам, например, в /sitemap.xml.

Просмотр сообщенияsabotage (25.8.2008, 13:26) писал:

Еще одна трабла - если включить в конфиге engine.debug = on, то заголовки отправляются с опозданием и кодировка "ложится".
zengine.php (\zengine\classes\zengine.php)

...

Решается переносом в ztemplate.php (\zengine\classes\ztemplate.php) и установкой  после:
		$this->charset = zengine::config()->get('engine.charset', 'utf-8');
		header('Content-Type: text/html; charset=' . $this->charset, true);
Спасибо, что указали на данную проблему, и вариант её решения :) Хотя, вариант решения и ошибочный, т.к. в Вашем случае при 404 ошибке из-за даты публикации, будет выведена информация о странице 404:

		if (!$zpage || $zpage->getProperty('publish') > ZENGINE_NOW) { // если дата публикации еще не наступила, то
			header('HTTP/1.1 404 Not Found');
			require_once 'zengine/classes/zpage/error.php';
			$zpage = zpage_error::getNotFound(); // переменная переопредлеяется объектом страницы 404
		}


#5 sabotage

sabotage

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 25.08.2008, 10:19

Просмотр сообщенияsupport (25.8.2008, 12:58) писал:

в Вашем случае при 404 ошибке из-за даты публикации, будет выведена информация о странице 404:
Это с наскока, дальше не смотрел. По поводу урлов - слеш впереди (htef=/index.html) остается или я торможу?

#6 support

support

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 1 140 сообщений

Отправлено 25.08.2008, 10:26

Просмотр сообщенияsabotage (25.8.2008, 14:19) писал:

Это с наскока, дальше не смотрел. По поводу урлов - слеш впереди (htef=/index.html) остается или я торможу?
Слеш остается. Т.е. если сайт лежит в корне сайта, то функция возвращает "/", если в папке lite, то "/lite/".




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей