Если не меняя запрос нажать "Найти" то переход кодировки на utf-8
Что это? Противостояние парсингу и сервисам использующим выдачу Яндекса?
Паранойя опять...
Просто полно допустим форм поиска которые отправляют в 1251, кстати и ya.ru тоже пока 1251 отправляет. При дальнейшей уже работе с поиском, когда реферер и accept charset позволяют - видно utf
Любителям массового парсинга выдачи это не может помешать.
P.S. Подскажите, если не трудно, другой способ нежели использование utf-8, если надо на одной странице показывать содержимое на разных языках, например китайском и русском. Кажется, у яндекса появилась возможность брать в индекс документы с иероглифами :) зря чтоль ДЦ открыли...
делал недавно переход на новую структуру - сначала создал новую структуру поверх старой, со старой ссылки на новую. постепенно по мере тестирования убивал старые страницы/папки целиком и ставил 301 редирект. где-то за месяц всё проиндексировалось, трафик не падал вообще.
Со своей стороны - FTP и БД пароли к соим серверам не даю вообще. Для оптимизаторов есть волшебная кнопка позволяющая редактировать мета- и специальную (дополнительную к контенту) текстовку на абсолютно любой странице сайта. Если надо - даётся пароль редактора, для добавления текстов на сайт. И никаких посторонних телодвижений на сервере. Если сайт клиента сидит где-то на стороне - это уже его проблемы, давать/не давать.
п.с. мне кажется, если оптимизатору нужен фтп доступ и без него никак - это признак некачественно сделанного сайта.
Господа, при 304 как раз ОБЯЗАТЕЛЬНО делать exit !
Но надо учитывать что 304 отдаётся в ответ на запрос содержащий заголовок If-Modified-Since. Примеров правильной логики обработки такого запроса масса.
Вот например кусочек кода... по мотивам обсуждения на xpoint.ru
В начале разбираемся какой заголовок отдать...
А в конце отдаём...
// Conditional GET
// Если Conditional Get не задан - просто отдаем файл.
if (!isset($_SERVER['HTTP_IF_NONE_MATCH']) && !isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$return=200;
//echo "<br>_none";
// Conditional GET задан, проверка только по If-Modified-Since:
} elseif (!isset($_SERVER['HTTP_IF_NONE_MATCH']) && isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
//echo "<br>_first";
$unix_ims = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
//echo "<br>".$unix_ims;
// если ошибка Conditional GET - просто отдаем файл.
if ($unix_ims > time() || !is_int($unix_ims)) {
$return=200;
//echo "<br>bad date";
// Conditional GET корректен.
} else {
//echo "<br>good date";
if ($unix_ims >= $main['timestamp']) {
$return=304;
} else {
$return=200;
}
}
// Conditional GET задан, проверка только по If-None-Match:
} elseif (isset($_SERVER['HTTP_IF_NONE_MATCH']) && !isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
//echo "<br>_second";
$INM = split('[,][ ]?', $_SERVER['HTTP_IF_NONE_MATCH']); // массив значений If-None-Match
foreach($INM as $enity) {
// если копия файла в кеше клиента не устарела
if ($enity == "\"$page_hash\"") {
$return=304;
}
}
// проверка и по If-Modified-Since, и по If-None-Match:
} elseif (isset($_SERVER['HTTP_IF_NONE_MATCH']) && isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$unix_ims = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); // значение If-Modified-Since в UNIX формате
$INM = split('[,][ ]?', $_SERVER['HTTP_IF_NONE_MATCH']); // массив значений If-None-Match
// Ошибка Conditional Get - просто отдаем файл.
if ($unix_ims > time() || !is_int($unix_ims)) {
//echo "<br>bad get";
$return=200;
// Conditional GET корректен.
} else {
foreach($INM as $enity) {
// если копия файла в кеше клиента не устарела
if ($enity == "\"$page_hash\"" && $unix_ims >= $FILE_INFO[2]) {
$return=304;
}
}
}
}
session_write_close();
header("X-Powered-By: chetyre tarakana i sverchok");
// может и зря пыжились, вдруг это вообще 404 ?
if ( $template=='404' ) {
$return=404;
header("Content-Type: text/html; charset=utf-8");
header("Last-Modified: " . gmdate("D, d M Y H:i:s",time())." GMT");
header("HTTP/1.1 404 Not Found");
ob_end_flush();
} elseif ( $return==304 ) {
header("HTTP/1.1 304 Not Modified");
header('ETag: "'.$page_hash.'" ');
// сброс буфера
while(ob_get_level()) ob_end_clean();
exit;
//по умолчанию 200
} else {
header("Content-Type: text/html; charset=utf-8");
header('ETag: "'.$page_hash.'" ');
header("Last-Modified: " . gmdate("D, d M Y H:i:s",$main['timestamp'])." GMT");
header('Expires: '.gmdate("D, d M Y H:i:s", $expiries).' GMT');
ob_end_flush();
}
Для правильной обработки надо знать реальное время последнего изменения страницы. Как дополнительная мера - для роботов отдавать заголовок Expiries с текущим временем+скажем неделя. На проиндексированность сайта не влияет, а вот трафик экономит прилично.
Сам сегодня наблюдаю весь день непонятные перемены кодировки и заметил странность:
при первом заходе браузером (IE) и запросе на яндекс - кодировка cp1251, при повторном запросе utf-8 и при всех следуюших запросах utf-8
Если перезапустить браузер то ситуация повторяеться.
пример: http://www.yandex.ru/yandsearch?text=%E2%E8%E4%E5%EE - cp1251
Если не меняя запрос нажать "Найти" то переход кодировки на utf-8
Что это? Противостояние парсингу и сервисам использующим выдачу Яндекса?
Паранойя опять...
Просто полно допустим форм поиска которые отправляют в 1251, кстати и ya.ru тоже пока 1251 отправляет. При дальнейшей уже работе с поиском, когда реферер и accept charset позволяют - видно utf
Любителям массового парсинга выдачи это не может помешать.
P.S. Подскажите, если не трудно, другой способ нежели использование utf-8, если надо на одной странице показывать содержимое на разных языках, например китайском и русском. Кажется, у яндекса появилась возможность брать в индекс документы с иероглифами :) зря чтоль ДЦ открыли...
CNstats и прочие подобные можно подлатать пока апдейт не вышел.
if( utf8_compliant($string) ) {
$string=iconv("UTF-8","WINDOWS-1251",$string);
}
function utf8_compliant($str) {
if ( strlen($str) == 0 ) return true;
return (preg_match('/^.{1}/us',$str) == 1);
}
Ну или как-то так, в зависимости от целей.
делал недавно переход на новую структуру - сначала создал новую структуру поверх старой, со старой ссылки на новую. постепенно по мере тестирования убивал старые страницы/папки целиком и ставил 301 редирект. где-то за месяц всё проиндексировалось, трафик не падал вообще.
Или, что может быть даже лучше - арендовать самый маленький vps у российского хостера и повесить вторичный ДНС.
Может, дело не столько в DNS сколько в неумеренном бане сеток некоторыми местными провайдерами?
Со своей стороны - FTP и БД пароли к соим серверам не даю вообще. Для оптимизаторов есть волшебная кнопка позволяющая редактировать мета- и специальную (дополнительную к контенту) текстовку на абсолютно любой странице сайта. Если надо - даётся пароль редактора, для добавления текстов на сайт. И никаких посторонних телодвижений на сервере. Если сайт клиента сидит где-то на стороне - это уже его проблемы, давать/не давать.
п.с. мне кажется, если оптимизатору нужен фтп доступ и без него никак - это признак некачественно сделанного сайта.
Господа, при 304 как раз ОБЯЗАТЕЛЬНО делать exit !
Но надо учитывать что 304 отдаётся в ответ на запрос содержащий заголовок If-Modified-Since. Примеров правильной логики обработки такого запроса масса.
Вот например кусочек кода... по мотивам обсуждения на xpoint.ru
В начале разбираемся какой заголовок отдать...
А в конце отдаём...
Для правильной обработки надо знать реальное время последнего изменения страницы. Как дополнительная мера - для роботов отдавать заголовок Expiries с текущим временем+скажем неделя. На проиндексированность сайта не влияет, а вот трафик экономит прилично.
Не удержусь, встряну. Slackware 11
Причина - апдейты через slackbuild скрипты, удобно и софт получается компилированный из исходников.
это из-за первого объявления маркета, там длиннющий текст ссылки без пробелов
косяк-с
а кое-кто поедет менять "перегретые" винты, хорошо у человека RAID стоял правильный...
Пользуюсь только FireFox+KeeperLight, для моих скромных задач болоее чем достаточно.