Проблема с gzip и чпу

Сенсей

Новичок
Проблема с gzip и чпу

Сначало был обычный CMS ... вначале скрипта стоял

PHP:
ob_start("ob_gzhandler");
И все работало как надо ...

Теперь я сделал ЧПУ .... в htaccess все прописал как надо...
+ Мне надр обработать налету данные сайта (привести в нужый формат ссылки)

Для этого написал свою функцию... И в конце скрипта :

PHP:
$contents = ob_get_contents();
ob_end_clean();
echo url_rewrite($contents);
Итог: в опере сайт грузится
В IE (и по слухам в других браузерах) виден лишь пустой лист ....

Если я вначале скрипта изменяю ob_start("ob_gzhandler"); на ob_start();

Все пашет и в IE ... но только это ж ведь уже без gzip сжатия.. а его терять не хочется ...

Как побороть?
 

fixxxer

К.О.
Партнер клуба
К сожалению, я не телепат, и увидеть, что такое "что надо" в хтаксесе и содержимое функции url_rewrite не могу.
 

Сенсей

Новичок
Код:
ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
RewriteCond  %{REQUEST_URI}  !^admin.*          [NC]


RewriteRule ^news_archive/show_all/page/(.*)/ modules.php?name=News_Archive&sa=show_all&pagenum=$1 [NC] [L]
RewriteRule ^news_archive/show_all/ modules.php?name=News_Archive&sa=show_all [NC] [L]
RewriteRule ^news_archive/(.*)/(.*)/ modules.php?name=News_Archive&sa=show_month&year=$1&month=$2 [NC] [L]
RewriteRule ^news_archive modules.php?name=News_Archive [NC] [L]
RewriteRule ^news_archive/ modules.php?name=News_Archive [NC] [L]

И так далее...
В url_rewrite()

PHP:
function url_rewrite(&$s)
{
	global $ThemeSel;
	$urlin = array(
	"'(?<!/)modules.php\?name=(News_Archive\")'",
	"'(?<!/)modules.php\?name=News_Archive&amp;sa=show_month&amp;year=([0-9]*)&amp;month=([0-9]*)'",
	"'(?<!/)modules.php\?name=News_Archive&amp;sa=show_all&amp;pagenum=([0-9]*)'",
	"'(?<!/)modules.php\?name=News_Archive&amp;sa=show_all'",
	);

	$urlout = array(
	"/news_archive/\"",
	"/news_archive/\\1/\\2/",
	"/news_archive/show_all/page/\\1/",
	"/news_archive/show_all/",
	);

	$s = preg_replace($urlin, $urlout, $s);
	return $s;
}
 

fixxxer

К.О.
Партнер клуба
нюка что ли? так у нее там внутри вроде еще хендлеры вложенные...
 

Orlis

Guest
не знаю, какие там gzip, но это строка бессмысленная и никогда не выполняется :

RewriteCond %{REQUEST_URI} !^admin.* [NC]

вместо неё нужно написать:

RewriteRule ^admin\.* - [L]
RewriteRule ^modules\.php$ - [L]
 

Сенсей

Новичок
Да фиг с ним с эти htaccess ... не думаю что это из за него ...

Я не могу понять почему

$contents = ob_get_contents();
ob_end_clean();
echo url_rewrite($contents);

Не работает корректно с ob_start("ob_gzhandler");

а с ob_start();

работает ....
 

.R1

Новичок
gzip

if you want to send an output to the browser (which accepts gzip), and you haven't set the buffering callback ob_start("ob_gzhandler"), you may use the gzencode() function.
PHP:
header("Content-Encoding: gzip");
echo gzencode("some output", 9, FORCE_GZIP);
Разумеется, целесообразно перед этим проверить "согласие" браузера.

Есть простой, не на столько ручной способ (из IPB):

PHP:
ob_start();
//
// engine run ...
//
$buffer = ob_get_contents();
ob_end_clean();
ob_start('ob_gzhandler');
print $buffer;
@header("HTTP/1.0 200 OK");
@header("HTTP/1.1 200 OK");
@header("Content-type: text/html");
exit;
 
Сверху