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

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

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

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

Комментариев: 2

  1. 2009-08-21 в 16:23:33 | Комментатор 3
    ]]>]]>

    Неплохой вариант решения для robots.txt - у меня один проект сервис блогов, но блоги в папке домена. А если делать на поддоменах то такой вариант очень поможет. В стандартном исполнении для все поддоменов указывается основной хост домен.

  2. 2009-08-31 в 07:03:16 | Комментатор 4
    ]]>]]>

    дописать перед выводом

    header("Content-type: text/plain");

Оставьте комментарий!

Используйте нормальные имена.

(обязательно)

Поиск

Статистика

Rambler's Top100