Файл Robots.txt для фотогаллереи Gallery

Многие используют фотогаллерею Gallery, но при этом не все обращают внимание на тот факт что писали ее хорошие программисты, но плохие SEOшники. Дело в том что сразу после того как вы начинаете добавлять в галлерею фотки, она начинает создавать различные дополнительные страницы, такие как:

  • Расширенный поиск
  • Страница входа для пользователей
  • Слайдшоу
  • Страница с картинками промежуточного размера

Проблема в том что к примеру таких страниц как расширенный поиск будет столько же сколько фоток в галлерее, потому что урл будет выглядеть типа

/main.php?g2_view=search.SearchScan&g2_form[useDefaultSettings]=1&g2_return=%2Fv%2Fgirls%2Fnovorusss.jpg.html%3F

то есть каждый раз будет добавляться параметр g2_return, который будет вести на ту страницу откуда пришел пользователь. Ниже представлен файл robots.txt который позволит предотвратить индексирование подобных страниц поисковыми ботами.

  1. Disallow: /main.php?g2_view=search.SearchScan&
  2. Disallow: /main.php?g2_view=core.UserAdmin&
  3. Disallow: /c/add/
  4. Disallow: /main.php?g2_view=shutterfly.PrintPhotos&
  5. Disallow: /main.php?g2_view=ecard.SendEcard&
  6. Disallow: /main.php?g2_view=slideshow.SlideshowMediaRss&
  7. Disallow: /main.php?g2_view=slideshow.Slideshow&
  8. Disallow: /main.php?g2_view=slideshowapplet.SlideshowApplet&
  9. Disallow: /admin/
  10. Disallow: /key/
  11. Disallow: /main.php?g2_controller=exif.SwitchDetailMode&

Еще по теме:  

Продолжение зимних покатушек на велосипеде с горок

С этой горки мне ссыкотно было ехать, а с других даже показывать стыдно после этой :) На утоптанном снегу даже дисковые тормоза и шипованные покрышки уже не помогают так что в конце пришлось спрыгивать чтобы не улететь в деревья :)

Еще по теме:  

Mldonkey - Error Torrent <name> is already in download queue

Уже не первый год пользуюсь программой Mldonkey, которая позволяет качать файлы с различных файлообменных сетей (torrent, emule, directconnect, etc) и графической оболочкой к ней - Sancho, которая доступна и под Windows и под Linux. Получается очень удобно, Mldonkey круглосуточно работает на серваке, качает и раздает файлы, а мне всего лишь нужно добавлять файлы в графической оболочке Sancho, когда файл скачался на почту приходит уведомление.

Недавно началась такая проблема, как то давно я качал файл, потом его удалил и вот недавно решил снова скачать, но не получалось - торрент файл добавлялся в Sancho, дальше ничего не происходило, на вкладке Console появлялась ошибка

Error: Torrent Школа Дмитрия Лесного is already in download queue

Перезапуск Mldonkery не помогал, проблема решилась так, надо остановить mldonkey зайти на сервер в папку /var/lib/mldonkey/torrents/downloads и оттуда удалить торрент с соответствующим именем, после чего запустить mldonkey и заново добавить файл - загрузка начнется.

Еще по теме:  

Мотивирующие видео

Смотрите финстриптизы других блоггеров, стастистику топ вебмастеров и по прежнему ничего не меняете? Может эти видео помогут изменить что нибудь в жизни?

Nick Vujicic - Жизнь без конечностей (речь на английском)

Randy Pausch - выступление на шоу Опры

Речь Стива Джобса выпускникам университета

Еще по теме:  

Покатались с горки зимой

На видео друг едет :)

Еще по теме:  

Date и Calendar в Drupal

Недавно на одном из сайтов мне понадобилось вывести информацию о различных событиях, и показывать все это в календаре, в Drupal есть для этого модули Date и Calendar, а в представленном ниже видео подробно объясняется как настроить CCK и views для того чтобы все это работало.
Еще по теме:  

Спорт

Одной из причин по которым я ушел с офлайн работы была необходимость поправить свое здоровье, с одной стороны работа за компом с 1999 года принесла много знаний, с другой стороны, это сильно испортило осанку, зрение и прочее. Т.к. теперь на офлайн работу ходить больше не нужно стараюсь по чаще заниматься спортом, когда проблемы со спиной то бегать вредно поэтому езжу на велосипеде. Зимой и по снегу. В этом есть свои недостатки, но их мало и устранить их очень просто.

Во первых нужны нормальные покрышки, во вторых дисковые тормоза. Когда я покупал велосипед то был выбор купить более менее нормальный велосипед с дисковыми (механическими) тормозами, либо получше но с обычными V-brake, кто не в теме, это тормоза которые как клещи обхватывают обод колеса и за счет этого тормозят. Летом на них можно нормально ездить и в дождь они тоже нормально у меня тормозили, за 3000 км что я проехал даже колодки не стерлись. Зимой на таких тормозах стоит один раз заехать в лужу и про тормоза можно забыть. Обод быстро покрывается тонкой пленкой льда и что есть тормоз что его нет. Жмешь со всей силы, при этом крутишь педали и спокойно едешь, не чувствуя сопротивления.

Сейчас самое время покупать всякое барахло для велосипеда потому что зимой мало всего продается и магазины устраивают распродажи, вчера например купил себе гидравлический дисковый задний тормоз Hayes. Раньше он стоил 4 с лишним тысячи, сейчас 2500. К нему еще придется заднюю втулку новую и спицы покупать и заплатить за установку, но это стоит того. Кроме этого без шипованной резины ездить по дорогам мягко говоря хреново. Допустим катаясь в парке если заехать туда где глубокий снег, можно спокойно ехать даже на моей летней почти лысой резине. Стоит только выехать на утоптанную покрытую снегом дорожку, как велосипед начинает колбасить. Самое хреновое когда заносит переднее колесо, из заноса становится трудно достаточно выйти.

Сами велики лучше всего брать весной, при этом покупать модель прошлого года, весной всегда скидки 30-40% на старые модели. В общем то старые модели не значит что это гавно какое то. Допустим велик стоил 30к, весной он станет 23 к примеру стоить :)

Еще по теме:  

Установка Django, PostgreSQL, Nginx на Debian сервере с нуля

Оригинал статьи размещен по адресу http://www.mindinmotion.ru/content/207.html

Решил снова попробовать Django. Некоторое время назад я перевел все сайты что начинал делать на Django на Drupal, либо на самописные решения, созданные с помощью Zend Framework. Тогда я руководствовался тем что надо хорошо знать какой один язык и забросил Python и Django. Сейчас все же решил снова вернутся к Django по нескольким причинам, во первых все таки многие вещи в Django делаются быстрее, ну например те же формы, даже используя Zend Form кода все равно в разы получается больше, особенно если валидаторы присобачивать, фильтры, кастомизировать как будет форма отображаться.

Ну вот как пример, кусок из одной партнерки которую я писал:

  1. $emailValidator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS, true);
  2.  
  3. $email = new Zend_Form_Element_Text('email');
  4. $email->setLabel('Email')
  5. ->setRequired(true)
  6. ->addFilter('StripTags')
  7. ->addFilter('StringTrim')
  8. ->addValidator($emailValidator)
  9. ->addErrorMessage('Ошибка: Email неправильный.');
  10. $email->setDecorators(array(
  11. 'ViewHelper','Description',
  12. 'Errors',
  13. array(array('data' => 'HtmlTag'), array('tag' => 'td')),
  14. array('Label', array('tag' => 'td')),
  15. array(array('row' => 'HtmlTag'),
  16. array('tag' => 'tr', 'openOnly' => false))
  17. ));

В общем ладно, перехожу к описанию установки Django, в качестве базы решил использовать PostgreSQL, лично для меня пофиг какая база PostgreSQL или MySQL, решил использовать PostgreSQL потому что сами разработчики Django когда разрабатывали свой фреймворк, затачивали его под Postgres.

  1. # aptitude install postgresql

Правим файл /etc/postgresql/8.4/main/postgresql.conf (здесь и дальше по тексту заменяем 8.4 на свою версию), меняем

  1. # listen_addresses = 'localhost'

на

  1. listen_addresses = 'localhost, 192.168.1.10'

В моем случае я прописываю внутренний айпишник сервера - 192.168.1.10

Дальше правим файл /etc/postgresql/8.4/main/pg_hba.conf, находим строку # IPv4 local connections:

добавляем

  1. host all all 192.168.1.1/24 md5

перезапускаем

  1. # /etc/init.d/postgresql-8.4 restart
  2. Restarting PostgreSQL 8.4 database server: main.

Если все сделали правильно Postgres начнет ждать подключений на нужном айпишнике.

  1. # netstat -tanp |grep postgre
  2. tcp 0 0 192.168.1.10:5432 0.0.0.0:* LISTEN 23104/postgres
  3. tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 23104/postgres
  4. tcp6 0 0 ::1:5432 :::* LISTEN 23104/postgres

Создаем нового юзера (в моем примере newuser) и зададим ему пароль qwerty

  1. # su postgres
  2. postgres@srv01:/etc/postgresql/8.4/main$ createuser newuser
  3. Shall the new role be a superuser? (y/n) n
  4. Shall the new role be allowed to create databases? (y/n) n
  5. Shall the new role be allowed to create more new roles? (y/n) n
  6. $ psql template1
  7. psql (8.4.1)
  8. Type "help" for help.
  9.  
  10. template1=# alter user newuser password 'qwerty';
  11. ALTER ROLE

Заодно сменим пароль для пользователя postgres

  1. template1=# ALTER ROLE postgres WITH ENCRYPTED PASSWORD 'my-super-secret-password';
  2. ALTER ROLE
  3. postgres=# \q

Создаем базу для пользователя newuser, на запрос пароля вводим пароль, который мы установили для пользователя postgres (my-super-secret-password)

  1. $ createdb websitedb --owner=newuser -hlocalhost
  2. Password:

Теперь пробуем подключиться с клиентской машины

  1. $ psql -Unewuser -W -hsrv01.lan
  2. Password for user newuser:
  3. psql (8.4.1)
  4. SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
  5. Type "help" for help.
  6.  
  7. newuser=>

С базой покончено, можно настраивать сайт

  1. # mkdir /var/www/yourwebsite
  2. # chown yourusername:yourusername /var/www/yourwebsite

Поясню этот шаг, у меня сервак используется для решения задач по разработке, так что я не ставлю целью сделать подобные проекты секьюрными и решаю вопросы по настройке сайтов исходя из того как мне удобно. Я монтирую директории по ssh и поэтому я меняю вдалельца каталогов на юзера yourusername - это тот юзер, которым я подключаюсь/монтирую по ssh этот проект.

Я использую Django из SVN, то есть самую последнюю версию, и я решил держать ее в той же директории, где будет находиться сайт. Тут есть одна особенность - сервер работает под юзером www-data, так что для директории с django я сменю owner на www-data, и туда же счекаютю последнюю версию Django, перед этим став юзером www-data.

  1. srv01:/var/www/yourwebsite# mkdir django-trunk
  2. srv01:/var/www/yourwebsite# chown www-data:www-data django-trunk/
  3. srv01:/var/www/yourwebsite# su www-data
  4. srv01:~/yourwebsite$ cd django-trunk/
  5. srv01:~/yourwebsite/django-trunk$
  6. $ svn co http://code.djangoproject.com/svn/django/trunk/ .
  7. A LICENSE
  8. A django
  9. A django/test
  10. A django/test/simple.py
  11. A django/test/client.py
  12. A django/test/testcases.py
  13.  
  14. ------------------- >8 вырезано -----------------------------
  15.  
  16. A examples/hello/urls.py
  17. A examples/views.py
  18. A examples/__init__.py
  19. A examples/settings.py
  20. A examples/urls.py
  21. A setup.cfg
  22. U .
  23. Checked out revision 11793.
  24. srv01:~/yourwebsite/django-trunk$ exit
  25. srv01:/var/www/yourwebsite#

Теперь нам надо узнать где находятся site-packages, для этого в консоли (в bash консоли, а не консоли python) надо набрать команду, приведеннуную ниже по тексту, в результате выполнения которой узнаем путь к site-packages.

  1. # python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
  2. /usr/lib/python2.5/site-packages

В процессе установки и написания этой статьи я решил что все таки лучше будет хранить последнюю версию Django в директории /var/www, чтобы каждый раз для каждого нового сайта не прописывать пути и каждый раз не апдейтить одну и ту же версию Django для разных сайтов.
# mv /var/www/yourwebsite/django-trunk /var/www

Далее необходимо сделать так чтобы Python мог загружать код Django, для этого необхоимо сделать symlink. После чего еще один symlink для того чтобы можно было запускать django-admin.py из любой директории.

  1. # ln -s `pwd`/django-trunk/django /usr/lib/python2.5/site-packages/django

Для запуска Django как FastCGI server понадобится flup, который можно установить из пакетов.

  1. # aptitude install python-flup

Создаем новый проект

  1. $ django-admin.py startproject yourproject
  2. boris@srv01:/var/www/yourwebsite$ ls -lha
  3. total 12K
  4. drwxr-xr-x 3 boris boris 4.0K Dec 4 13:55 .
  5. drwxrwxrwx 60 www-data www-data 4.0K Dec 4 00:58 ..
  6. drwxr-xr-x 2 boris boris 4.0K Dec 4 13:55 yourproject
  7. boris@srv01:/var/www/yourwebsite$ ls -lha yourproject/
  8. total 20K
  9. drwxr-xr-x 2 boris boris 4.0K Dec 4 13:55 .
  10. drwxr-xr-x 3 boris boris 4.0K Dec 4 13:55 ..
  11. -rw-r--r-- 1 boris boris 0 Dec 4 13:55 __init__.py
  12. -rwxr-xr-x 1 boris boris 546 Dec 4 13:55 manage.py
  13. -rw-r--r-- 1 boris boris 2.8K Dec 4 13:55 settings.py
  14. -rw-r--r-- 1 boris boris 550 Dec 4 13:55 urls.py

Проект создан, теперь можно запускать FastCGI сервер и настраивать Nginx.

  1. boris@srv01:/var/www/yourwebsite/yourproject$ ./manage.py runfcgi method=threaded host=127.0.0.1 port=3033

Теперь создаем конфиг для nginx /etc/nginx/sites-available/yourwebsite (если не установлен, то устанавливаем командой sudo aptitude install nginx). Ниже содержимое этого файла:

  1. upstream djangoserv {
  2. server 127.0.0.1:3033;
  3. }
  4. server {
  5. listen 80;
  6. server_name yourwebsite;
  7. root /var/www/yourwebsite/yourproject;
  8.  
  9. access_log /var/www/ /logs/access.log;
  10. error_log /var/www/yourwebsite/logs/error.log;
  11.  
  12. location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
  13. access_log off;
  14. expires 30d;
  15. }
  16.  
  17. location / {
  18. fastcgi_pass 127.0.0.1:3033;
  19. fastcgi_param PATH_INFO $fastcgi_script_name;
  20. fastcgi_param REQUEST_METHOD $request_method;
  21. fastcgi_param QUERY_STRING $query_string;
  22. fastcgi_param SERVER_NAME $server_name;
  23. fastcgi_param SERVER_PORT $server_port;
  24. fastcgi_param SERVER_PROTOCOL $server_protocol;
  25. fastcgi_param CONTENT_TYPE $content_type;
  26. fastcgi_param CONTENT_LENGTH $content_length;
  27. fastcgi_pass_header Authorization;
  28. fastcgi_intercept_errors off;
  29. }
  30.  
  31. }

После чего делаем symlink и включаем конфиг для нового виртуал хоста, создаем папку с логами и выставляем ей нужного владельца (www-data), после чего перезагружаем nginx.

  1. srv01:/etc/nginx/sites-available# ln -s /etc/nginx/sites-available/yourwebsite /etc/nginx/sites-enabled/yourwebsite
  2. srv01:/etc/nginx/sites-available# mkdir /var/www/yourwebsite/logs
  3. srv01:/etc/nginx/sites-available# chown www-data:www-data /var/www/yourwebsite/logs
  4. # /etc/init.d/nginx reload
  5. Reloading nginx configuration: the configuration file /etc/nginx/nginx.conf syntax is ok
  6. configuration file /etc/nginx/nginx.conf test is successful
  7. nginx.

Если все сделали правильно теперь можно зайти по адресу http://yourwebsite и увидеть там дефолтную страницу Django с надписью It worked!

Еще по теме:  

О хорошем хостинге, sape и как яндекс определяет продажность ссылок

Как я уже писал раньше, у меня на балконе стоит сервак, на нем крутится много разные сервисов, и кроме всего прочего еще несколько гавносайтов валяется. Вчера Корбина поднасрала мне и 1.5 дня не было инета, вернее он как бы был, но любая страница открывалась по 10 минут (это не преувеличение), а то и вообще не открывалася. В итоге -20 рублей примерно в сапе, еще два гавносайта вылетели из яши, не успев дожить до того времени когда публикация в wordpress закончится и будет максимальное количество страниц.

Когда добавлял последний гавносайт, заметил странную вещь после индексации в сапе показалось общее количество страниц, а потом сколько страниц какого уровня. Так вот общее количество показывалось, а по уровням везде было написано 0. Сначала принял за глюк sape, потом оказалось сайт забанен в яндексе. Между апами кстати оба сайта вылетели, то есть сайт вчера был, вчера уже нет в выдаче. Причиной того что показывалось 0 страниц, оказалось именно то что этих страниц не было в яше.

Собственно о продажности ссылок, послушаешь все эти разговоры о том как Яндекс определяет эти ссылки, почитаешь публикации разные в все так заумно выглядит. Ну а на самом деле если задуматься, у sape же нет какого нибудь ботнета который они контроллируют и с помощью него проверяют индексацию страницы. Скорее всего (а так и есть наверно) они проверяют все это с помощью сервиса Яндекс.XML. Так что яндекс все знает о том что сайт скорее всего продает ссылки в сапе. Сам факт того что с подсети сапы проверили сайт не говорит о том что он продает ссылки, но как еще один из фактор при ранжировании сайта или как еще один фактор увеличивающий вероятность бана сайта за продажность ссылок увеличивает.

Еще по теме:  

Последние комментарии