seo

Подписаться на эту метку по RSS

Вновь всплыла на форуме Макса тема о некорректной отдаче HTTP-заголовков. Видимо в прошлый раз я недостаточно рассмотрел проблему и, как следствие, она не была решена.

Цитирую:

У нас уже был случай, когда на странице пишется 404,
а в заголовке 200. По идее нужен контроль над отдачей заголовка.
Как выяснилось, существует загвоздка:

На уровне системы нет такого контроля - она лишь послушно раскладывает
адрес на сегменты. В других CMS этот процесс практически аналогичен -
можно добавить произвольные get-параметры в адрес и получить эту же
страницу.
Я вижу такой выход: по умолчанию система отдаёт 404. При подключении типов, если есть материал для отображения переопределяем на 200. Потом нужна проверка на лишние сегменты. И нужно в тех плагинах, где идёт подключение на сегмент сделать переопределение заголовка на 200.

Максим предложил такое решение:

Админ задаёт некий шаблон адреса, который считается верным, например:
category/*
category/*/next/*
/next/*
page/*
где / - разделитель сегментов, а * - произвольная часть сегмента. В этом примере адрес category/news будет валидным, а category/news/23 - нет.

То есть плагин при инициализации системы (хук init) проверяет текущий адрес на один из разрешенных шаблонов и если он соответствует любому варианту, то ничего не делает. Если же соответствия нет, переделывает type на page_404.

Нулевая тестовая версия плагина была реализована мной.

chaly_404.zip 0

На мой взгляд данные меры недостаточны и следует ввести ещё ряд проверок на правильность сегмента. Нужно обсудить и обдумать предложения по совершенствованию плагина.

В своих проектах использую чтобы избежать расклейки доменов типа www.rus.am c rus.am

Этот код помещаем в .htaccess

# В переменную окружения %{ENV:PROTOCOL} помещаем протокол

RewriteRule ^(.*)$ - [E=PROTOCOL:http]

RewriteCond %{HTTPS} ^on$ [NC]

RewriteRule ^(.*)$ - [E=PROTOCOL:https]

# Если нужно убираем www

RewriteCond %{SERVER_PORT} ^80$

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]

RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]

Теперь у нас идёт правильная переадресация всех страниц с домена, на домен без www.

Закладочник на Jquery для MaxSite CMS

Понедельник, 17 августа 2009 г.
Рубрика: Сайтостроительство
Метки: | |

Приветствую! Создал свой первый плагин для MaxSite CMS. Он генерирует список ссылок для добавления страницы в социальные сервисы, закладки. К слову для MaxSite уже создано два подобных плагина. Это стандартный addzakl и недавно представленный плагин от Алексея (http://driverlab.ru). Собственно очень даже неплохие и даже отличные простые решения. Чем они меня не устраивают? Да ничем. Но есть красивое решение для создания таких кнопок от dimox'a (http://dimox.name). Дмитрий использует библиотеку Jquery. Я взял за основу данный скрипт, адаптировал его к MaxSite и добавил администраторские возможности из скрипта Алексея. То что получилось можно взять по нижеследующей ссылке, а также оценить в работе на этом сайте.

bookmarks_jquery.zip 0

Сегодня, 22 августа случайно обнаружил несовместимость данного плагина с lightbox'ом и colorbox'ом. Выглядит таким образом: меню плагина не раскрывается, галерея не выводит окна с картинкой. В общем если поставить разом - убивают друг друга.:) Решил найти проблему. Отключал по очереди вызовы некоторых процедур в этом плагине. Помогает только полное удаление файла jqsocial.js. Ошибка нашлась неожиданно и совершенно случайно. Файрбаг зафиксировал такое вот дело:

При включённом lightbox'e: $ is not a function $('div.gallery a').lightBox({

При включённом colorbox'e: $ is not a function $(".gallery,.slideshow").find("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.png']...

Что с этим счастьем делать не знаю, по идее ошибка у разработчиков lightbox'ов, без них ошибок не наблюдается.

В любом случае разбираться самостоятельно не буду... Толку не будет. Даже не могу понять где искать ошибки. Однако если добрые люди подскажут, что нужно сделать и переделать, чтобы ошибки не возникали - всегда готов.

МаксМногосайт v. 0.1

Пятница, 15 мая 2009 г.
Рубрика: Сайтостроительство
Метки: | |

А вот и обещанная ссылка на скачивание.

Ни в коем случае не ставьте сразу на рабочий сайт! Я конечно всё протестировал, но лучше проверьте как заработает.

Наипервейшая и наипростейшая версия. Надеюсь будет развиваться... Есть к чему стремиться! Качайте! Ах да - на винде не тестировал.

MaxSite МногоСайт? Продолжение...

Четверг, 30 апреля 2009 г.
Рубрика: Сайтостроительство
Метки: | |

Приветствую!

Сегодня расскажу о некоторых подробностях превращения MaxSite CMS в многосайтовую систему. Собственно продолжу рассказ.

Мои попытки сделать общую админ-панель провалились даже не начавшись. Плохо ли, хорошо ли... Решил не заморачиваться, когда понял, что практической пользы и удобства минимум, а кроить систему придётся основательнее чем думал ранее.

Итак, сегодня расскажу, как сделать скрипты для динамического вывода файлов sitemap.xml и robots.txt, первый - карта сайта, второй - инструкции индексации.

Начну, пожалуй с sitemap.xml: поначалу долго мучался как сделать, потом допёрло: создаём в корневой директории папку, в ней ещё одну с названием сайта. Будет что-то типа http://AskName.ru/folder/AskName.ru/ В неё засовываем наш sitemap.xml. Далее нам нужно подправить плагин Макса (путь на сайте /application/maxsite/plugins/xml_sitemap/index.php). В самом конце файла меняем строчку:

  • $fn = realpath(dirname(FCPATH)).'/sitemap.xml';
На такую:
  • $fn=realpath(dirname(FCPATH)).'/folder/'.$_SERVER['HTTP_HOST'].'/sitemap.xml';
После этого ваш sitemap.xml будет лежать по примерно такому адресу: http://AskName.ru/folder/AskName.ru/

Как вариант можно сделать с помощью Mod Rewrite перенаправления так, чтобы поисковик думал, что он лежит в корневой папке сервера, но я пошёл по другому пути и поэтому мы рассмотрим способ динамического создания файла robots.txt

В корневой директории нужно создать файл robots.php, так как нам нет смысла делать разные robots.txt для каждого сайта (движок то один), имеет смысл воспользоваться моим простеньким кодом, вот он:

  • <?php
  • echo 'User-agent: *
  • Disallow: /system$
  • Disallow: /users$
  • Disallow: /admin$
  • Disallow: /login$
  • Disallow: /tag$
  • Disallow: /feed$
  • Host: '.$_SERVER['HTTP_HOST'].'
  • Sitemap: http://'.$_SERVER['HTTP_HOST'].'/folder/'.$_SERVER['HTTP_HOST'].'/sitemap.xml';
  • ?>
Отличаться у разных сайтов будут только директивы Host и Sitemap. Так и должно быть. Данный пример проходит проверку на правильность в яндексе. Но для того, чтобы robots.php отдавался по запросу robots.txt, нужно сделать следующее - прописать в .htaccess перенаправление:
  • RewriteRule ^robots.txt$ http://%{HTTP_HOST}/robots.php
В принципе абсолютно простое решение, возможно не такое совершеннои и идеальное, но свою задачу оно выполняет: сделать многосайтовую MaxSite CMS с минимальными исправлениями кода, с целью упрощения обновления системы, и как мне кажется я справился с задачей блестяще. Надеюсь знающие люди дадут оценку такому решению.

Существует ещё одна идея - можно sitemap.xml запихать в файлы шаблона. Технически легко осуществимо... Как то не подумал сначала. Завтра попробую сделать. В любом случае это решается простой правкой пары-тройки строк. На сегодня всё.

MaxSite МногоСайт?

Вторник, 21 апреля 2009 г.
Рубрика: Сайтостроительство
Метки: | | |

Здравствуйте друзья!

Недавно у меня родилось множество идей по созданию качественных сайтов. Причём все как-то разом, не к месту и не ко времени...  Однако родились и теперь терзают неокрепший ум:) К делу - мы ж все люди ленивые, а я, наверное, самый ленивый из всех... Чтобы не следить за обновлениями системы управления сайтами, обновлять не несколько систем, а  один раз, решил написать расширение для моей любимой системы. Для MaxSite. Тут возникают закономерные вопросы: не проще ли взять многопользовательский вордпресс или тот же би2, альтернатив множество... Однако, мне кажется, что за системой Макса будущее, при всех её недоработках, да и патриотизм сыграл некоторую роль.

Итак, была идея сделать действительно сервис блогов, но это трудно для меня... и пока я решил попробовать избавиться хотя-бы от проблемы обновления десятка одинаковых систем, вариант этого я вам и предоставляю:

Для начала нам нужно добиться использования одной базы данных. Экономика должна быть экономной! Для этого мы внесём некоторые поправки в файл /application/config/database.php:

  • $pref=$_SERVER["HTTP_HOST"];
  • $pref=str_replace("www.","",$pref);
  • $pref=str_replace(".","",$pref);
  • $pref=str_replace("-","",$pref);
  • $db['default']['dbprefix']=$pref."_";
Здесь мы формируем префикс в базе данных и он будет отличаться для каждого домена. В принципе этого достаточно, однако стоит воспользоваться ещё одним кодом, а именно редиректом через .htaccess на адрес без www. В принципе не обязательно, но лучше создать в корневой папке файл .htaccess и внести в него такие строки:
  • RewriteRule ^(.*)$ - [E=PROTOCOL:http]
  • RewriteCond %{HTTPS} ^on$ [NC]
  • RewriteRule ^(.*)$ - [E=PROTOCOL:https]
  • RewriteCond %{SERVER_PORT} ^80$
  • RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
  • RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1%{REQUEST_URI} [R=301,L]
  • RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
  • RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]
Говорю честно: код упёрт с одного из форумов, причём достаточно давно. Его преимущество в отличие от обычного редиректа в том, что он универсален - смело кидайте в корень и для всех сайтов он будет работать.

В принципе эти два пункта у себя я реализовал, сейчас будет работа по созданию robots.txt, оригинального для каждого сайта, а также xml-sitemap, карты сайта. Без этих пунктов о многосайтовости и говорить не стоит:) А об этом я напишу только тогда, когда сделаю сам и оно корректно заработает, хотя наброски у меня уже есть;-)

Первый Постовой:

Стоит почитать блог Антона

Социальные закладки

Понедельник, 20 апреля 2009 г.
Рубрика: Веб-мастерство
Метки: |

Приветствую друзья!

Хочу рассказать, о моих попытках прогнать этот сайт по модным ныне социальным серверам закладок...  Честно говоря, результат меня не впечатлил.

Воспользовался я сервисом easu.ru прорекламированному на сёрче, много положительных отзывов... Сервис автоматически прогнал главную страницу по некоторому количеству закладочников, прошло некоторое время, но количество обратных ссылок ни с Яндекса, ни с Гугла не увеличилось. Посещаемость также не пошла вверх. В связи с этими фактами у меня возникло сомение в целесообразности прогона по закладкам. Может стоит по-старинке по каталогам? Доверие к прогону по закладкам у меня несколько подорвано... Далее попробовал сам вручную погонять, ещё пару сервисов привлёк, результата опять нет.

Может быть прошло слишком мало времени? Или я что-то сделал не так? В любом случае не особо и расстроился:) Этот сайт пока раскручивать активно не планируется, есть другие проекты.

Как итог, хочу отметить: раскруткой сайта надо заниматься комплексно, похоже если прогонять только по закладкам толку не будет.

Немного о Mod Rewrite

Воскресенье, 19 апреля 2009 г.
Рубрика: Сайтостроительство
Метки: |
Думать одно, а говорить другое - это типичный симптом

раздвоения личности (Неизвестный)

Приветствую друзья! Давно не писал я на этом сайте, пора это исправлять! Сегодня расскажу про некоторые особенности формирования URL в современных системах управления контентом.  Приступим.

Каждый раз вы видите в интернете ссылки типа такой:  http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki Интересный адрес, не правда ли?:) На первый взгляд кажется, что действительно существует на сервере папка page, подпапка maxsite-cms-404-nevernye-zagolovki, в ней файл index.html... Конечно не исключено, что так и есть, но чаще всего это не так! Здесь и вылезает загадочный модуль Mod Rewrite. Поставляется он в комплекте с программным обеспечением Apache, хотя есть аналоги под другие http-сервера. В принципе его цель одна - перенаправить запрос на какой-либо скрипт. То есть, к примеру, вы набираете в строке браузера вышеуказанный URL а Mod Rewrite переадресует запрос на файл index.php, который разбирает и обрабатывает его. Без него URL представлял бы собой нечто такое: http://askname.ru/index.php?dir=game/assault.url&scr=next&sess=1 Это, так называемый, динамический URL. Как видно, скрыты передаваемые параметры. Зачем? Разница вроде невелика... Для людей особой разницы нет. Хотя на самом деле здесь проскальзывает значимость первого варианта для поисковиков. Если гугл как-то научился справляться с URL с параметрами, то яндекс, мягко говоря, на этом глючит. Есть опыт.

Итак, я подхожу к тому, что Mod Rewrite важен для любого оптимизатора! Это действительно так, ведь с помощью него можно перенаправлять не только запросы пользователей, но и поисковых ботов;-) А уж обладая некоторыми навыками, можно очень многое наворотить. Неспроста все лучшие системы управления контентом используют данную возможность, кто-то в качестве одной из настроек, а MaxSite CMS вообще изначально построена под Mod Rewrite.

Собственно, я долго не писал ещё по причине изучения данного инструмента. Вскоре начну выкладывать свои наработки в этой области. Но уже сейчас скажу: изучайте! Незаменимый инструмент для веб-мастера!

Поиск

Статистика

Rambler's Top100