.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-й уровень вложенности, если очень хочется.

далее

Блог

Поломка админки NetCat 4.7 в Google Chrome и Opera

В современных версиях Google Chrome и Opera, вышедших в прошлом месяце, админка CMS NetCat 4.7 и младше вдруг сломалась. Поломка проявляется в том, что в правой части админки перестала показываться нижняя панель редактирования (там, где кнопки Добавить и прочие), а скролл-прокрутка не осуществляется до конца. Работать с сайтом и добавлять новые материалы не представляется возможным.

далее

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

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

далее

Права Доступа в Компонентах: работают не так, как ожидается; но можно накостылить патч

Если в настройках Раздела или Инфоблока NetCat попробовать дать доступ на изменение объекта ВСЕМ, ничего не получится. Просмотр и Добавление работают одним образом, а Изменение, Включение и Удаление -- другим.

далее

Как расставить запятые между тегами на CSS?

Иногда проще что-то сделать на чистом CSS, чем на серверной стороне. Например, расставить запятые между тегами. Попробуем разделить подчеркнутые теги-ссылки на чистом CSS.

далее

Весь блог тут