Иногда требуется в .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) »
При недоступности скриптов с 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, который закрывает своё содержимое от индексации валидным не считается. (Не путать с 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 | Нет комментариев »
Собственно, из названия несложно догадаться, что во всех браузерах $JQuery.post(…) работает нормально, а в Internet Explorer - не совсем. Если точнее - не вызывается callback-функция после отправки параметров на сервер (на сервере действия происходят - проблема только в вызове Callback)
Как правило, достаточно настроить сервер для отдачи соответствующих заголовков: про решение проблемы с post jquery callback в IE
Опубликовано Август 5, 2011 | автор: levik | Нет комментариев »
Для раскодирования символов 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})/','\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 | Нет комментариев »