Запрещаем загрузку файлов с внешних сайтов
Вам надоели люди, которые размещают картинки, опубликованные на вашем сайте — на своих ресурсах, тем самым расходуя ваш траффик и создавая ненужную нагрузку на ваш хостинг? Данный код, размещенный в конце вашего файла .htaccess, позволит предотвратить загрузку ваших изображений — сторонними сайтами.
Options +FollowSymlinks #Запрещаем загрузку файлов с внешних сайтов RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http RewriteRule .*.(gif|jpg|png)$ http
Не забудьте изменить site.com на ваше доменное имя и создать изображение stop.gif, которое будет показано вместо запрошенной картинки.
Примеры 301 редиректов в .htaccess
Мы уже рассматривали множество примеров с редиректом по в статьях:
- 301 редирект для удаления/добавления слэша в конце URL
- 301 редирект с index (.html и .php) на корень сайта «/»
- Редирект 301 с http на https
- Редирект 301 с www на без www
- Смена адреса сайта — редирект со старого домена на новый
Здесь мы дополним варианты редиректов, которых еще не было.
2.1. Редирект с одной страницы на другую
Редирект с site.ru/cat/oldpage на site.ru/newpage.html
RewriteRule ^cat/oldpage.* /newpage.html
Или второй вариант:
Redirect 301 /cat/oldpage http://www.site.com/newpage.php
2.2. Редирект со всех файлов .htm на .html
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)\.htm$ $1.html
Или второй вариант:
RewriteRule ^(.*)\.htm$ $1.html
С любой страницы в каталоге и подкаталогах /old/ будет происходит редирект на /new.php
RewriteRule ^old(.*)$ /new.php
2.4. Удаление лишних слэшей в адресе URL
Например, страница /catalog///stranica.html доступна и открывается. Чтобы избежать такой ситуации и не плодить бесконечное число дублей следует записать следующий редирект
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2
2.5. Реврайт без редиректа
Можно загрузить другую страницу без смены адреса страницы URL. Например, загрузим страницу /news.html, а в адресной строке будет отображаться адрес /news/happy
RewriteRule ^news/happy.* /news.html
2.6. Простановка замыкающего слеша в конце адреса главной страница
Например, многие сервера работают так, что последний слэш не пишется в URL. Например, http://site.ru. Ниже приведенный код решают это проблему: сайт будет открывать по http://site.ru/
RewriteCond %{REQUEST_URI} /++$ RewriteRule ^(.+)$ %{REQUEST_URI}/
Например для редиректа со страницы site.com/directoriya/stranica.html на site.com/stranica.html нужно прописать следующее:
RewriteRule ^directoriya/(.+)$ http://site.com/$1
Или второй вариант:
RewriteCond %{DOCUMENT_ROOT}/directoriya/$1 -f RewriteRule ^(.*)$ directoriya/$1
2.8. Редирект GET параметров
Например, сделать редирект со страницы /?act=page&id=2 на /page-2/
RewriteCond %{QUERY_STRING} act=page RewriteCond %{QUERY_STRING} id=(\d+) RewriteRule .* /page/%1/? ]
2.9. Редирект на мобильную версию сайта m.site.ru
В данном примере сначала проверяется факт того, что пользователь открыл сайт с мобильного устройства , далее происходит замена адреса сайта на m.URL
RewriteCond %{HTTP_HOST} ^(.*)$ 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) RewriteRule ^$ http://m.%1
2.10. Редирект с поддомена
Например, выполним редирект с любой страницы поддомена poddomen.site.ru на основной домен site.ru
RewriteCond %{HTTP_HOST} ^poddomen.site.ru$ RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI}
Отсекаем спам
Страдаете от спама на вашем блоге WordPress? Конечно, плагин Akismet может оказать существенную помощь, но и файл не останется в стороне от борьбы с заразой. Данный код предотвращает непосредственный доступ спам ботов к файлу , который формирует комментарии на блоге.
# Заменяем yourdomainname на имя вашего домена <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*yourdomainname.* RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ </IfModule>
3.Другие примеры с htaccess
3.1. Запретить IP-адрес и браузер
Запретим открывать сайт для пользователя с браузера IE с IP-адресом 172.111.222.55
RewriteCond %{HTTP_USER_AGENT} MSIE RewriteCond %{REMOTE_ADDR} ^172\.111\.222\.55$ RewriteRule ^.*$ -
Запретим для всех файл disable_file.html:
<Files disable_file.html> deny from all </Files>
3.3. Разрешить доступ с одного ip
Доступ будет разрешен только с одного ip-адреса 172.111.222.55
order deny,allow deny from all allow from 172.111.222.55
3.4. Запретить доступ с разных ip
Запретить доступ к сайту с нескольких ip-адреса 172.112.222.55, 172.113.222.55, 172.114.*.*
<Limit GET POST PUT> order deny,allow deny from all deny from 172.112.222.55 deny from 172.113.222.55 deny 172.114.*.* </LIMIT>
3.5. Редирект в URL с больших символов на маленькие
Все большие буквы в адресе URL будут переведены на маленькие.
RewriteRule - RewriteRule ! - RewriteRule ^(*)A(.*)$ $1a$2 RewriteRule ^(*)B(.*)$ $1b$2 RewriteRule ^(*)C(.*)$ $1c$2 RewriteRule ^(*)D(.*)$ $1d$2 RewriteRule ^(*)E(.*)$ $1e$2 RewriteRule ^(*)F(.*)$ $1f$2 RewriteRule ^(*)G(.*)$ $1g$2 RewriteRule ^(*)H(.*)$ $1h$2 RewriteRule ^(*)I(.*)$ $1i$2 RewriteRule ^(*)J(.*)$ $1j$2 RewriteRule ^(*)K(.*)$ $1k$2 RewriteRule ^(*)L(.*)$ $1l$2 RewriteRule ^(*)M(.*)$ $1m$2 RewriteRule ^(*)N(.*)$ $1n$2 RewriteRule ^(*)O(.*)$ $1o$2 RewriteRule ^(*)P(.*)$ $1p$2 RewriteRule ^(*)Q(.*)$ $1q$2 RewriteRule ^(*)R(.*)$ $1r$2 RewriteRule ^(*)S(.*)$ $1s$2 RewriteRule ^(*)T(.*)$ $1t$2 RewriteRule ^(*)U(.*)$ $1u$2 RewriteRule ^(*)V(.*)$ $1v$2 RewriteRule ^(*)W(.*)$ $1w$2 RewriteRule ^(*)X(.*)$ $1x$2 RewriteRule ^(*)Y(.*)$ $1y$2 RewriteRule ^(*)Z(.*)$ $1z$2 RewriteRule - RewriteCond %{ENV:HASCAPS} TRUE RewriteRule ^/?(.*) /$1
Предотвращаем хотлинк ресурсов сайта
Хотлинк (использование изображений вашего сайта другими сайтами в сети) является весьма популярной практикой, которая прожигает впустую трафик вашего сервера. Следующий код будет перенаправлять все хотлинк запросы к изображениям вашего сайта на определенную картинку, адрес которой задается в строке 6.
RewriteEngine On #Замените ?mysite\.com/ на адрес вашего блога RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ RewriteCond %{HTTP_REFERER} !^$ #Замените /images/nohotlink.jpg на ваше изображение с запрещением хотлинка RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg
Блокируем все запросы от нежелательных User Agents
Это правило позволяет заблокировать нежелательные User Agent, которые могут быть потенциально опасными или просто перегружать сервер ненужными запросами.
#Блокируем плохих ботов и роботов SetEnvIfNoCase user-Agent ^FrontPage NC,OR SetEnvIfNoCase user-Agent ^Java.* NC,OR SetEnvIfNoCase user-Agent ^Microsoft.URL NC,OR SetEnvIfNoCase user-Agent ^MSFrontPage NC,OR SetEnvIfNoCase user-Agent ^Offline.Explorer NC,OR SetEnvIfNoCase user-Agent ^[WwebBbandit NC,OR SetEnvIfNoCase user-Agent ^Zeus NC <limit get="" post="" head=""> Order Allow,Deny Allow from all Deny from env=bad_bot </limit>
Запрещаем комментарии от пользователей без Referrer
Чаще всего спам-боты обращаются напрямую к файлу комментариев, например к wp-comments-post.php, не заходя на страницы записей вашего блога. Приведенный ниже код позволяет заблокировать комментарии, отправленные пользователями, которые пришли «из ниоткуда», позволяя комментировать только тем читателям, которые перешли на страницу вашего блога с каких-либо других страниц (например, результатов поиска Google).
#Запрещаем комментарии от пользователей без Referrer RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .comment\/reply\
Не забудьте заменить yourblog.com на доменное имя вашего блога.
Защита от прямых ссылок для изображений через .htaccess
Хотлинк (Hotlink) — вставка прямых ссылок изображений или файлов с одного сайта на другие. Этот прием используется довольно часто, ну например, у вас на сервере не хватает места для хранения картинок и вы пользуетесь каким-либо бесплатным сервисом для хранения файлов изображений, т.е. загружаете картинку, получаете URL и вставляете его на свой сайт.
В итоге: вы сохраняете место для вашего сайта и используете пропускную способность хостинга для картинок, но это уже не ваше дело. Но вот как быть, если кто-то решил, что ваш сайт можно использовать как подобный сервис.
Как не стать бесплатным поставщиком изображений и файлов?
Есть ли защита от этого? Да, есть! Чтобы запретить другим сайтам пользоваться вашим трафиком и/или просто указывать прямые ссылки на ваши файлы (картинки), то добавьте в ваш .htaccessфайл следующие строки:
# Запретить другим сайтам использовать прямые ссылки на ваши картинки RewriteCond %{HTTP_REFERER} !^$ # Дальше список разрешенных доменов RewriteCond %{HTTP_REFERER} !^http(s)?: RewriteCond %{HTTP_REFERER} !^http(s)?: # IP сайта (домена) RewriteCond %{HTTP_REFERER} !^http(s)?: RewriteCond %{HTTP_REFERER} !^http(s)?: RewriteCond %{HTTP_REFERER} !^http(s)?: RewriteCond %{HTTP_REFERER} !^http(s)?: # RewriteCond %{HTTP_REFERER} !^http(s)?: RewriteCond %{HTTP_REFERER} !search?q=cache NC # Форматы файлов, для которых устанавливается защита # Выводит ошибку 403 # RewriteRule \.(jpe?g|bmp|gif|png|css|mov|swf|dcr|exe|rar|avi|vob|zip|pdf|txt|doc|flv|mp3|mp4)$ — NC,F,L # или показывает спецрисунок вместо указанного RewriteRule .*\.(jpe?g|bmp|gif|png)$ filesimagesnohotlink.jpg NC,L
В итоге все остальные сайты получат ошибку 403 Forbidden (т.е.Доступ запрещен) и ваша пропускная способность больше «не работает на других».
ImageCache и защита от хотлинка через .htaccess
Для ImageCache предыдущий пункт работать не будет, поэтому добавляем такие настройки:
SetEnvIfNoCase Referer «^$» local_ref=1 # Allowed domains # Далее разрешенные домены SetEnvIfNoCase Referer «^http SetEnvIfNoCase Referer «^http # File extensions that you want to protect # Расширения файлов, которые нужно защитить <FilesMatch "\.(bmp|jpe?g|gif|png)"> Order Allow,Deny Allow from env=local_ref </FilesMatch>
Теперь у нас есть и защита от хотлинка и модуль ImageCache — вместе они работают превосходно. Одно «но» — таким способом, как вы видите не получится выдавать другую картинку; только защита своих изображений, что и является основной целью.
Сжимаем компоненты сайта путем включения Gzip
При использовании Gzip, сервер будет сжимать файлы перед отправкой их пользователю, ввиду чего ваш сайт будет грузиться быстрее.
#Сжимаем компоненты сайта путем включения Gzip AddOutputFilterByType DEFLATE texthtml textplain .. .. textxml applicationxml applicationxhtml+xml .. .. textjavascript textcss applicationx-javascript BrowserMatch ^Mozilla4 gzip-only-texthtml BrowserMatch ^Mozilla4678 no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-texthtml
Обратите внимание, что включение компрессии приведет к большей нагрузке на процессор сервера. Здесь строкаAddOutputFilterByType записывается в одну длинную строчку с двумя нижними (все .
нужно убрать).