Обрезание слэша в url с 301 редиректом
А собственно почему бы и не повесить этот тут, потом будет легко найти, когда опять понадобится. Зачастую поисковики воспринимают страницы вида
arm1.ru/blog/yandex-upal-panika-v-twitter
и
arm1.ru/blog/yandex-upal-panika-v-twitter/
как разные страницы. Получается, что один и тот же контент технически по двум разным страницам, что не есть хорошо. Под катом код для автоматического отрезания символа / в конце с 301 редиректом, чтобы поисковики не дублировали страницы при индексировании.
<?php
# убираем QUERY_STRING строку из REQUEST_URI
$uri = $_SERVER['REQUEST_URI'];
if ( false === empty( $_SERVER['QUERY_STRING'] ) )
$uri = str_replace( '?' . $_SERVER['QUERY_STRING'], '', $uri );
# переадресация через 301 редирект при присутствии слэша в конце $uri
if ( substr( $uri, -1 ) == '/' && strlen( $uri ) > 1 ) {
$queryString = '';
if ( false === empty( $_SERVER['QUERY_STRING'] ) )
$queryString = '?' . $_SERVER['QUERY_STRING'];
header( 'Location: ' . substr( $uri, 0, -1 ) . $queryString, true, 301 );
exit;
}
comment
comments
Резюме встречи Apple Developers Community #7
Побывал сегодня на Apple Developers Community #7. Рассказывали про продвижение ios-приложений. По сути докладывались два человека - представитель компании Nevosoft, которая, похоже, на конвейере фигачит игры, и один инди-разработчик.
comment commentsОтправка сообщений в Twitter через php
Давно хотел выложить свой простенький набор функций для отправки твитов в Twitter. Может кому полезно будет, т.к. мне не сразу всё далось, особенно формирование подписи. Плюс это моя попытка закрепить в голове то, что было познано и закодено. По-моему нет лучше способа это сделать, чем попытаться кому-то это объяснить :) Под катом описание и код.
comment commentsПроблемы с PUT при обновлении CouchDB до 1.1.0
Сегодня обновили на продакшн-сервере CouchDB до версии 1.1.0. Столкнулись с проблемой - PUT-запросы не работали, возвращали странную ошибку:
[error] => unknown_error
[reason] => function_clause
То есть мы не могли обновить ни один документ в БД, но при этом POST-запросы на создание новых документов вполне себе работали.
Выяснилось, что при обновлении CouchDB с младшей версии до 1.1.0 в системе остаётся две версии какого-то модуля (может быть это касается нескольких модулей) - старая, и новая. Эти две версии друг с другом конфликтуют.
Решение оказалось простым, хотя и довольно странным. Нужно найти в системе, где хранятся *.beam файлы (в нашем случае это /opt/couchdb), удалить их (если страшно - то можно переместить), после чего вернуться в папку с исходными кодами CouchDB и выполнить снова команду:
make install
comment
comments
Потоковое вещание звука на Mac OS X
Так получилось, что в моей комнате колонки находятся в одной части, а компьютер в другой. Провод от колонок тянуть не представляется разумным. Итак - имеются колонки, wi-fi, а также мобильное устройство с wi-fi (в моём случае iPad, но может подойти всё что угодно, что умеет играть по wi-fi музыку). Вспомнил, что есть замечательная программа Nicecast - с её помощью можно организовать в 1 клик онлайн-вещание. Суть в том, чтобы оставаться за своим рабочим местом и рулить музыкой за ним, но играла она в колонках на другой стороне. Кому-то покажется, что проще провод протянуть, но... Fuck yeah, почему бы не заморочиться?
comment commentsПара настроек FCKEditor
В качестве шпаргалки - чтобы быстро настроить FCKeditor. Хоть он уже и устарел и разработчики делают CKEditor - но в нём нет бесплатного файлового менеджера, а в CKEditor - есть.
Это что-то вроде шпаргалки для быстрого подключения FCKEditor.
comment comments