.htaccess

Полезные сниппеты кода для файла .htaccess, собранные в одном месте.

Картинка-заглушка, показывается если нужное изображение не найдено в текущей директории

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule \.(gif|jpe?g|png|bmp) /cars-pics/!404.png [NC,L]

Популярные редиректы

RewriteEngine On
### to www ####
RewriteCond %{HTTP_HOST} ^example.ru$ [NC] # домен без www перекидывать в любом случае
RewriteRule ^(.*)$ https://www.example.ru/$1 [R=301,L]

### хороший https-редирект ###
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

### http://wiki.example.com/index.php~n=ЦИФРЫ/ЦИФРЫ --> http://example.com/wiki/ЦИФРЫ/ЦИФРЫ ###
# вообще-то вместо вроде ~ должен быть ?, но так почему-то не получилось сделать
RewriteRule ^index\.php~n=([0-9]+)/([0-9]+)$ http://example.com/wiki/$1/$2 [R=301,L]

###  не редирект, но создание нового короткого адреса, по которому отдается контент длинного адреса ### 
RewriteRule ^question_([0-9]+).html$ /questions/question_$1.html [L,QSA]

### редирект для страницы вида: /events/exhibitions/exhibitions_756.html ,  а также любых подобных страниц вида: /*/*/*_*.html  ###
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)_([0-9]+).html$ /index/index_$4.html [R=301,L]

Борьба с DOS-атаками и парсингом:

# отсеиваем злых ботов по User-Agent
SetEnvIfNoCase User-Agent "^DigExt; DTS Agent" bad_bot

# открываем доступ только себе
deny from all 
allow from *.*.*.* # мой текущий IP

Большой список популярных ботов:

RewriteCond %{HTTP_USER_AGENT} MJ12bot [OR]
RewriteCond %{HTTP_USER_AGENT} Java [OR]
RewriteCond %{HTTP_USER_AGENT} NjuiceBot [OR]
RewriteCond %{HTTP_USER_AGENT} Gigabot [OR]
RewriteCond %{HTTP_USER_AGENT} Baiduspider [OR]
RewriteCond %{HTTP_USER_AGENT} JS-Kit [OR]
RewriteCond %{HTTP_USER_AGENT} Voyager [OR]
RewriteCond %{HTTP_USER_AGENT} PostRank [OR]
RewriteCond %{HTTP_USER_AGENT} PycURL [OR]
RewriteCond %{HTTP_USER_AGENT} Aport [OR]
RewriteCond %{HTTP_USER_AGENT} ia_archiver [OR]
RewriteCond %{HTTP_USER_AGENT} DotBot [OR]
RewriteCond %{HTTP_USER_AGENT} SurveyBot [OR]
RewriteCond %{HTTP_USER_AGENT} larbin [OR]
RewriteCond %{HTTP_USER_AGENT} Butterfly [OR]
RewriteCond %{HTTP_USER_AGENT} libwww [OR]
RewriteCond %{HTTP_USER_AGENT} Wget [OR]
RewriteCond %{HTTP_USER_AGENT} SWeb [OR]
RewriteCond %{HTTP_USER_AGENT} LinkExchanger [OR]
RewriteCond %{HTTP_USER_AGENT} Soup [OR]
RewriteCond %{HTTP_USER_AGENT} WordPress [OR]
RewriteCond %{HTTP_USER_AGENT} PHP/ [OR]
RewriteCond %{HTTP_USER_AGENT} spbot [OR]
RewriteCond %{HTTP_USER_AGENT} MLBot [OR]
RewriteCond %{HTTP_USER_AGENT} InternetSeer [OR]
RewriteCond %{HTTP_USER_AGENT} FairShare [OR]
RewriteCond %{HTTP_USER_AGENT} Yeti [OR]
RewriteCond %{HTTP_USER_AGENT} Birubot [OR]
RewriteCond %{HTTP_USER_AGENT} YottosBot [OR]
RewriteCond %{HTTP_USER_AGENT} gold\ crawler [OR]
RewriteCond %{HTTP_USER_AGENT} Linguee [OR]
RewriteCond %{HTTP_USER_AGENT} Ezooms [OR]
RewriteCond %{HTTP_USER_AGENT} lwp-trivial [OR]
RewriteCond %{HTTP_USER_AGENT} Purebot [OR]
RewriteCond %{HTTP_USER_AGENT} User-Agent [OR]
RewriteCond %{HTTP_USER_AGENT} kmSearchBot [OR]
RewriteCond %{HTTP_USER_AGENT} SiteBot [OR]
RewriteCond %{HTTP_USER_AGENT} CamontSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ptd-crawler [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [OR]
RewriteCond %{HTTP_USER_AGENT} suggybot [OR]
RewriteCond %{HTTP_USER_AGENT} ttCrawler [OR]
RewriteCond %{HTTP_USER_AGENT} Nutch [OR]
RewriteCond %{HTTP_USER_AGENT} AhrefsBot [OR]
RewriteCond %{HTTP_USER_AGENT} Zeus
RewriteRule .* - [F,L]

Статьи темы:

Диагностика VPS или что делать, если сервер упал

речь о сервере под управлением CentOS и ISPmanager
Филипп Казаков

Если сервер упал и совсем не отвечает даже по прямому запросу по IP-адресу, то нужно его перезагрузить. Что делать, если это не помогло, читайте далее. В этой статье мы опишем свой непрофессиональный опыт администрирования серверов на базе CentOS, а именно выходов из самых разных стрессовых ситуаций собственными силами. Даже хорошая техподдержка хостинга - это не панацея, если проблема возникла в воскресенье, например. Или если она возникает периодически. Или если ее очень нужно решить прямо сейчас.

далее

Как в NetCat сгенерить страницы первого уровня вложенности?

то есть страницы вида domain.ru/question_NN.html ?
Филипп Казаков

Казалось бы, никак, так как архитектура системы предполагает, что объекты могут быть добавлены только в разделы. Даже корень сайта domain.ru по-умолчанию является зеркалом страницы domain.ru/Index/ Можно долго спорить о том, насколько это плохо или наплевать, но я лучше расскажу, как все-таки всунуть объекты на 1-й уровень вложенности, если очень хочется.

далее

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Весь блог тут