суббота, 21 марта 2015 г.

Переадресация мобильных устройств на сайте с помощью .htaccess

В данном материале мы решим вопрос о том как сделать переадресацию посетителей с мобильных устройств на мобильную версию вашего сайта.
Это очень простой и короткий материал, к тому же знать его полезно всем вебмастерам.
Итак, излаживаю код. Файл .htaccess:
RewriteEngine on 
RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml¦application/vnd.wap.xhtml+xml" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|benq|blac|blaz|brew|cell|cldc|cmd-" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "dang|doco|erics|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|android|mobile|pda|psp" [NC]
RewriteRule ^(.*)$ http://m.вашсайт.ru/$1 [NC,L]
Данный код ищет мобильные устройства и перенаправляет их на субдомен с сохранением адреса.
Например у вас есть страница ааа.ру/транспорт/машины и посетителя зашедшего с планшета (Андроид) перенаправляет на следующий адрес m.aaa.ru/транспорт/машины. Тоесть как видите адрес сохранился только добавился субдомен.
С помощью данной переадресации вы сможете сделать отдельное оформление, структуру сайт для посетителей с мобильных устройств и планшетов, что может очень пригодиться.



Перенаправление посетителей мобильных устройств

теги статьи
 
Как перенаправить посетителей мобильных устройств на мобильную верcию сайта при помощи htaccess
Примеры User-Agent мобильных устройств.
Это потрясающе удобно, если при заходе на сайт при помощи мобильного вас автоматически перенаправляет на мобильную версию.

Как определить пользователя с мобильного устройства

Нам необходима возможность изменять настройки веб-сервера при помощи файла htaccess. Так же должен быть включен ModRewrite.
Для определения мы используем значение User-Agent, которое передает броузер при запросе страницы. Каждый броузер по умолчанию имеет свое уникальное значение этого поля.
Пользователи, у которых User-Agent соответствует мобильным броузерам перенаправляется на мобильную версию.
В htaccess это выглядит так
RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|iphone|android)
RewriteRule ^(/)?$ http://m.domain.com/ [R=301]

Тестируем перенаправление

Проверить, выполняется ли редирект можно при помощи мобильного телефона, а можно при помощи программы wget, задав через командную строку User-Agent
wget -U Samsung http://www.domain.com

User-agent для мобильных устройств/броузеров

Список User-Agent можно посмотреть тут
Или более короткий список:
RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android)

Недостатки данного метода редиректа

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




10 вставок кода для файла .htaccess

Файл .htaccess является сердцем веб сервера, который работает под управлением Apache. Именно здесь определяется реакция сервера на различные действия посетителя. в данном уроке приводится 10 с + приемов для использования в файле .htaccess.
Чтобы использовать вырезки кода, их надо просто скопировать в файл .htaccess, который располагается в корневом каталоге вашего сервера Apache.
Предупреждение: перед редактированием файла .htaccess нужно всегда делать резервную копию работающего варианта!

Принудительная постановка замыкающего слеша

Считается, что замыкающий слеш в адресе URL очень хорошо помогает в области SEO сайта. Следующий код всегда будет добавлять слеш в адрес URL вашего сайта.
1<IfModule mod_rewrite.c>
2 RewriteCond %{REQUEST_URI} /+[^\.]+$
3 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
4</IfModule>

Предотвращаем хотлинк ресурсов сайта

Хотлинк (использование изображений вашего сайта другими сайтами в сети) является весьма популярной практикой, которая прожигает впустую трафик вашего сервера. Следующий код будет перенаправлять все хотлинк запросы к изображениям вашего сайта на определенную картинку, адрес которой задается в строке 6.
1RewriteEngine On
2#Замените ?mysite\.com/ на адрес вашего блога
3RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
4RewriteCond %{HTTP_REFERER} !^$
5#Замените /images/nohotlink.jpg на ваше изображение с запрещением хотлинка
6RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

Перенаправляем мобильные устройства

Если ваш сайт не использует адаптивный дизайн, то будет очень полезно перенаправить мобильные устройства на специальную версию сайта.
01RewriteEngine On
02RewriteCond %{REQUEST_URI} !^/m/.*$
03RewriteCond %{HTTP_ACCEPT} "text/vnd.wap.wml|application/vnd.wap.xhtml+xml"[NC,OR]
04RewriteCond %{HTTP_USER_AGENT}"acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-"[NC,OR]
05RewriteCond %{HTTP_USER_AGENT}"dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-"[NC,OR]
06RewriteCond %{HTTP_USER_AGENT}  "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
07RewriteCond %{HTTP_USER_AGENT}"palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
08RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
09RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
10RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
11RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp"[NC,OR]
12RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
13#------------- Строка ниже исключает iPad
14RewriteCond %{HTTP_USER_AGENT} !^.*iPad.*$
15#-------------
16RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
17RewriteRule ^(.*)$ /m/ [L,R=302]

Принудительная загрузка файлов определенного типа

По некоторым причинам вам может потребоваться принудительная загрузка файлов определенных типов (например, MP3 или XLS). Нижеприведенный код будет предотвращать чтение таких файлов браузером и принудительно запускать загрузку.
1<Files *.xls>
2  ForceType application/octet-stream
3  Header set Content-Disposition attachment
4</Files>
5<Files *.eps>
6  ForceType application/octet-stream
7  Header set Content-Disposition attachment
8</Files>

Междоменное использование шрифтов для FireFox

При использовании встроенных шрифтов Firefox не позволяет брать их с внешних сайтов. Следующий код для файла .htaccess позволит обойти данное ограничение.
1<FilesMatch "\.(ttf|otf|eot|woff)$">
2<IfModule mod_headers.c>
3#Замените yourdomain.com на адрес вашего блога
4    Header set Access-Control-Allow-Origin "http://yourdomain.com"
5</IfModule>
6</FilesMatch>

Ускоряем сайт с помощью кэширования .htaccess

Используя кэширование .htaccess можно существенно увеличить скорость сайта.
01# 1 ГОД
02<FilesMatch "\.(ico|pdf|flv)$">
03Header set Cache-Control "max-age=29030400, public"
04</FilesMatch>
05# 1 НЕДЕЛЯ
06<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
07Header set Cache-Control "max-age=604800, public"
08</FilesMatch>
09# 2 ДНЯ
10<FilesMatch "\.(xml|txt|css|js)$">
11Header set Cache-Control "max-age=172800, proxy-revalidate"
12</FilesMatch>
13# 1 МИНУТА
14<FilesMatch "\.(html|htm|php)$">
15Header set Cache-Control "max-age=60, private, proxy-revalidate"
16</FilesMatch>

Отсекаем спам

Страдаете от спама на вашем блоге WordPress? Конечно, плагин Akismet может оказать существенную помощь, но и файл .htaccess не останется в стороне от борьбы с заразой. Данный код предотвращает непосредственный доступ спам ботов к файлу  wp-comments-post.php, который формирует комментарии на блоге.
1# Заменяем yourdomainname на имя вашего домена
2<IfModule mod_rewrite.c>
3RewriteEngine On
4RewriteCond %{REQUEST_METHOD} POST
5RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
6RewriteCond %{HTTP_REFERER} !.*yourdomainname.* [OR]
7RewriteCond %{HTTP_USER_AGENT} ^$
8RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
9</IfModule>

Приводим различные фиды к единому формату

Несколько лет назад использовались различные форматы фидов, такие как RSS, Atom или Rdf. В наши дни RSS определенно стал самым используемым. Данный код позволяет перенаправить все форматы фидов в один формат.
1# Заменяем URL на адрес своего блога
2<IfModule mod_alias.c>
3 RedirectMatch 301 /feed/(atom|rdf|rss|rss2)/?$ http://example.com/feed/
4 RedirectMatch 301 /comments/feed/(atom|rdf|rss|rss2)/?$ http://example.com/comments/feed/
5</IfModule>

Конфигурируем сайт для видео HTML5

HTML5 привнес много новшеств в мир веб разработки. Возможность проигрывать видео без использования FLASH является одной из лучших особенностей HTML5. Хотя нужно правильно сконфигурировать  сервер для корректной работы с последними стандартами видео HTML5.
1RewriteCond %{REQUEST_FILENAME} !-f
2RewriteCond %{REQUEST_FILENAME} !-d
3RewriteCond %{REQUEST_URI} !=/favicon.ico
4AddType video/ogg .ogv
5AddType video/ogg .ogg
6AddType video/mp4 .mp4
7AddType video/webm .webm
8AddType application/x-shockwave-flash swf

Записываем ошибки PHP в журнал

Вместо вывода ошибок PHP на страницах вашего сайта (что дает информацию потенциальным хакерам…) можно записывать их в журнал (файл .log), скрывая от посетителей.
1# отключаем вывод ошибок пользователям
2php_flag display_startup_errors off
3php_flag display_errors off
4php_flag html_errors off
5# заносим ошибки в журнал
6php_flag log_errors on
7php_value error_log /location/to/php_error.log

Запускаем PHP в файлах JavaScript

При разработке кода JavaScript иногда требуется использовать PHP в файлах .js.  Например, для получения данных из базы.
1AddType application/x-httpd-php .js
2AddHandler x-httpd-php5 .js
3 
4<FilesMatch "\.(js|php)$">
5SetHandler application/x-httpd-php
6</FilesMatch>








2 коммент.:

  1. В вашей статье то 301 редирект то 302 используется и ни слова об этом в статье не написано!!!!

    ОтветитьУдалить