За месяц Август, 2011

RewriteEngine, RewriteRule и русские буквы в .htaccess

Иногда требуется в .htaccess сделать редирект (внутренний или внешний) при помощи mod_rewrite для ЧПУ адресов с русскими буквами. Но проблема в том, что русские SEO-URL не обрабатываются в .htaccess (за исключением маски .* - любой символ)

Варианты вроде
RewriteRule %EF%E8%F1%FC%EC%EE letter.htm [R=301,L]
RewriteRule Письмо letter.htm [R=301,L]
# пробуем экранировать символ процента
RewriteRule ^(\%) index.php?url=$1

И всё-таки, как написать RewriteRule при кодировании русских ссылок?

RewriteRule ^([0-9-А-Я]+)(/)? index.php [R=301,L]

Методом проб и ошибок установлено, что в правилах, написанных в .htaccess не распознаётся символ %

Один из работающих вариантов, который перенаправляет все обращения к адресу

AddDefaultCharset UTF-8
RewriteRule ^(.*) index.php?url=$1 [L]

Естественно, его следует дополнить условиями (если файл или каталог не существует)

“Нормального” решения, как преобразовать конкретный русский адрес именно в .htaccess я не нашёл.
www.site.ru/русский_URL.html
/%EF%E8%F1%FC%EC

Вот такой код работает, однако перечислять все русские буквы в .htaccess - не есть хорошо
RewriteRule ^([абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯa-zA-Z0-9\%]+)$ index.php?url=$1

Клёвый гайд по RewriteRule http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html

Опубликовано Август 24, 2011 | автор: levik  |  Комментарии (5) »

Yandex упал - скрипты и CDN

При недоступности скриптов с CDN (многие сайты размещают JQuery, например на Yandex|Google) сайт может потерять необходимую функциональность.

На случай недоступности JQuery на стороннем сервере можно добавить проверку и дополнительную загрузку со своего:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>

async="true" // для тэга скрипт

Опубликовано Август 18, 2011 | автор: levik  |  Нет комментариев »

Валидный noindex - делаем тэг noindex валидным

Тег noindex, который закрывает своё содержимое от индексации валидным не считается. (Не путать с Meta-тэгом, который задает индексирование всей страницы поисковиками:

<meta name="robots" content="noindex,nofollow" />

Однако, иногда, в целях продвижения и SEO-шаманства требуется закрыть часть текста на странице от индексации. Как же быть?

1. Используем javascript для вывода неиндексируемого текста

Конечно, метод слегка извращенный, однако работает.. В своё время популярностью пользовались различные менюшки на javascript , ссылки в которых не индексировались поисковиками.. Приходилось добавлять ссылочки в подвал, или прятать в скрытый блок на главной странице… Кстати, содержимое тэга noscript яндекс также игнорирует (или нет), хотя google в noscript заглядывает… Надо бы проверить…

2. Используем валидный noindex №1

В разделе помощи Яндекс есть строчка, которая отвечает на вопрос о валидности noscript

<!--noindex-->текст, индексирование которого нужно запретить<!--/noindex-->

3. Валидный noindex №2

Не совсем документированный, но работающий (? опять проверка) метод… Использовался для закрытия от индексации до появления 2 варианта (noindex №1)

<del class="hide"><![CDATA[<noindex>]]></del> контент в noindex<del class="hide"><![CDATA[</noindex>]]></del>

Знаешь другие способы сделать noindex валидным? Поделись в комментарии =)

Опубликовано Август 10, 2011 | автор: levik  |  Нет комментариев »

В IE не работает post в jQuery - callback в internet Explorer

Собственно, из названия несложно догадаться, что во всех браузерах $JQuery.post(…) работает нормально, а в Internet Explorer - не совсем. Если точнее - не вызывается callback-функция после отправки параметров на сервер (на сервере действия происходят - проблема только в вызове Callback)

Как правило, достаточно настроить сервер для отдачи соответствующих заголовков: про решение проблемы с post jquery callback в IE

Опубликовано Август 5, 2011 | автор: levik  |  Нет комментариев »

php - декодируем символы unicode

Для раскодирования символов Unicode в PHP можно воспользоваться следующей хитростью:

Для декодирования строки “\u0412\u0435\u0441\u0442\u0435\u0440\u043D \u041D\u0430\u0439\u0442\u0441″ можно сначала преобразовать ее в “Вестерн Найтс”, а потом воспользоваться html_entity_decode.

Код выглядит примерно так:

$s = '\u0412\u0435\u0441\u0442\u0435\u0440\u043D \u041D\u0430\u0439\u0442\u0441';
$s = preg_replace('/\\\u0([0-9a-fA-F]{3})/','&#x\1;',$s);
$s = html_entity_decode($s, ENT_NOQUOTES,'UTF-8'));

http://blog.peter.am/index.php/2011/05/28/php_unicode_decode

Опубликовано Август 1, 2011 | автор: levik  |  Нет комментариев »