Tag Archives: web

Автор:Dmitriy Altuhov

mod_rewrite loop hide php extension and trailing slash

Задача: сделать так, чтобы

  1. при обращении напрямую к PHP-файлу появлялась ошибка 403 (запрет доступа)
  2. при обращении к адресу без последнего слеша (http://altuhov.su/contacts) происходил редирект 301 на страницу со слешем (http://altuhov.su/contacts/)
  3. при открытии страницы со слешем выполнялся скрипт $1.php (contacts.php)

Основная проблема в том что mod_rewrite при каждом запросе переписывает REQUEST_URI и можем попасть в бесконечный цикл, если будем делать сравнение:
RewriteCond %{REQUEST_URI} .*\.php$ [NC]
RewriteRule ^(.*).php$ /$1 [L,R]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/$ /$1.php
Так первое выражение перепишет REQUEST_URI на /$1 (/contacts), а второе выражение перепишет обратно на /$1.php (/contacts.php) и вернёт обратно в mod_rewrite и снова перепишем на /$1 (/contacts)

Правильный и рабочий вариант:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/$ /$1.php

RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/ [NC]
RewriteRule ^.*$ — [F,L]

Автор:Dmitriy Altuhov

PHP SNMP SNR-ERD-3.2

Для переключения интернет-каналов используются веб-интерфейс (скрипт на PHP): Два интернет-канала. Переключение. Очистка conntrack. 

Для удобства сотрудников в данный интерфейс были добавлены выводы информации по SNMP с датчиков SNR-ERD (Пример системы контроля и мониторинга серверной комнаты)

chswtemp

 

Код очень простой:

<?php
#error_reporting(E_ALL);
# ini_set(‘display_errors’, 1);
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
$tempinservermak = snmpget(«10.0.2.5», «public», «1.3.6.1.4.1.40418.2.3.4.1.0»);
$tempoutmak = snmpget(«10.0.2.5», «public», «1.3.6.1.4.1.40418.2.3.4.2.4.0»);
$temproommak = snmpget(«10.0.2.5», «public», «1.3.6.1.4.1.40418.2.3.4.2.2.0»);
echo ‘Температура (градусов Цельсия)-<br>’;
echo ‘В серверной: ‘.$tempinservermak;
echo ‘<br>’;
echo ‘На улице у серверной: ‘.$tempoutmak;
echo ‘<br>’;
echo ‘В помещении: ‘.$temproommak;
echo ‘<br><br>Температура (градусов Ццльсия) — <br>’;
$tempinservertur = snmpget(«10.1.2.5», «public», «1.3.6.1.4.1.40418.2.3.4.1.0»);
$temproomtur = snmpget(«10.1.2.5», «public», «1.3.6.1.4.1.40418.2.3.4.2.4.0»);
$tempouttur = snmpget(«10.1.2.5», «public», «1.3.6.1.4.1.40418.2.3.4.2.2.0»);
echo ‘В серверной: ‘.$tempinservertur;
echo ‘<br>’;
echo ‘В цехе: ‘.$tempouttur;
echo ‘<br>’;
echo ‘В помещении: ‘.$temproomtur;
?>

Автор:Dmitriy Altuhov

Медленная работа хостинга Ру-Центр.Cannot allocate memory.

В продолжение статьи Инструменты для оптимизации и ускорения загрузки веб-сайтов. Google PageSpeed мы начали более детальное изучение работы хостинг-площадки RU-CENTER.

Подключились по SSH к нашему виртуальному веб-серверу. Посмотрели top, ps faux (загрузку системных ресурсов).

По выводу команды top стало понятно, что сервер перегружен (другими сайтами). Load average был очень большим. Загрузка CPU ниже 50% не опускалась.
И в логах было много ошибок Cannot allocate memory: fork: Unable to fork new process

RU-CENTER предоставляет бесплатную возможность изменения расположения хостинга.
С помощью данного сервиса можно перенести все сайты (виртуальный хостинг) с сервера в Москве на сервер в Новосибирске или Амстердаме.

На сервере в Новосибирске ситуация намного лучше:
load averages: 1.08, 0.92, 0.86 up 175+03:31:37 16:41:10
10 processes: 1 running, 9 sleeping
CPU: 8.3% user, 0.0% nice, 1.5% system, 0.6% interrupt, 89.6% idle
Mem: 6644M Active, 1746M Inact, 2756M Wired, 415M Cache, 1236M Buf, 279M Free
Swap: 4096M Total, 139M Used, 3957M Free, 3% Inuse

После переноса и выполнения оптимизаций/тюнинга из статьи Инструменты для оптимизации и ускорения загрузки веб-сайтов. Google PageSpeed работа наших сайтов значительно ускорилась.

Автор:Dmitriy Altuhov

Инструменты для оптимизации и ускорения загрузки веб-сайтов. Google PageSpeed

Благодаря инструменту Google PageSpeed Insights мы ускорили загрузку сайтов c нашего виртуального хостинга (Ру-Центр).

Для выполнения рекомендаций мы внесли изменения во все конфигурационные файлы виртуальных сайтов nginx, предварительно переключив все сайты в ручной режим.

Указанным ниже кодом мы включаем отправку заголовка Expires (для кеширования браузерами контента) и сжатие страниц/файлов на лету gzip.

expires +24h;
gzip on;
gzip_disable «msie6»;
gzip_comp_level 3;
gzip_vary on;
gzip_static off;
gzip_min_length 1024;
gzip_types text/css text/plain application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_http_version 1.0;
gzip_proxied any;

Автор:Dmitriy Altuhov

Google Fontsи адаптивный дизайн

Для разработки WEB-сайтов важно применять качественные, читабельные шрифты.

Компания Google бесплатно предоставляет свои шрифты для использования в WEB-проектах. Достаточно указать адрес шрифта (импортировать) на серверах Google.
www.google.com/fonts

Шрифты — пол-дела. Нужно учесть, в современном мире множество устройств с различными скоростями доступа в интернет, разрешением экрана и предустановленным браузером.

Сайт должен хорошо отображаться на любом устройстве.

Можно сделать несколько вариантов сайта и, в зависимости от устройства, показывать нужный вариант клиенту.

Либо сделать универсальный адаптивный сайт, который изменяется при изменении разрешения экрана.

Подробнее можно почитать — Чем тестировать адаптивный дизайн?

Или посмотреть — responsive.is/www.it74.su

Автор:Dmitriy Altuhov

ВКонтакте может замедлить работу Вашего сайта

Если Вы используете Open API ВКонтакте, то в случае технических проблем с доступом к серверам «ВКонтакте» Ваш сайт будет медленно открываться.

Причина проста — скрипт openapi.js грузится с vk.com:
<script src=»http://vk.com/js/api/openapi.js» type=»text/javascript» charset=»windows-1251″></script>

Автор:Dmitriy Altuhov

Превью ссылок и миниатюра записи в социальных сетях

Команда поддержки ВКонтакте:

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

ВКонтакте, как и другие социальные сети, в первую очередь забирает эту информацию с OpenGraph мета-тегов, прописанных в шапке сайта: og:image, og:description, og:title. Если этих тегов нет, берется первое, что будет в коде. Поэтому, чтобы миниатюра записи отображалась на стене должным образом, нужно на самом сайте передать ссылку на миниатюру в такую строчку между тегами <head> и </head>: <meta property=»og:image» content=»http://site.ru/thumbnail.png» />