Полезные фишки .htaccess
.htaccess — это такой текстовый файлик который должен лежать в корневой директории и который позволяет управлять поведением вашего сервера. Создать такой файлик очень просто .
Для этого нужно создать текстовый файл, назвать его .htaccess и сохранить в корне сайта.
А теперь даю вам нужные примеры кода с объяснением для чего он нужен.
1. Определение страниц ошибок (error) в .htaccess
ErrorDocument 403 /403.php ErrorDocument 404 /404.php ErrorDocument 500 /500.php
2. Удаление дублей страниц — редирект адресов-дублей
Часто бывает, что сайт у нас доступен по адресам http://www.site.ru/ http://site.ru/ http://www.site.ru/index.html http://site.ru/index.html Но это неправильно, так как считается как дублированный контент. Этим правилом, мы это исправим
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.site.ru/ [R=301,L]
Таким образом, мы получим редирект всех страниц-дублей на http://www.site.ru/
3. Переадресация страниц
Этим правилом мы создаем 301 редирект с одной страницы на другую
redirect 301 /old-page.php http://www.site.ru/new-page.php
4. Защита изображений от скачивания или как предотвратить хотлинкинг
Часто контент с сайта нагло тырят, причем часто тупую вместе с картинками, в итоге на чужих сайтах будут отображаться картинки, который будут подгружаться с ваших серверов, а это не гуд, так как создает повышенную нагрузку.
RewriteEngine on
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)?site\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteCond %{HTTP_REFERER} !msn\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{REQUEST_URI} !^/hotlinker\.gif$
RewriteRule \.(gif|jpg|png)$ /hotlinker.gif [NC,L]
где hotlinker.gif — это изображение, которое будет показано на сайтах-ворах, вместо украденных картинок. Можете туда вставить лого вашего сайта к примеру.
5. Как позволить использовать php код в статических сайтах и файлах
Для этого добавляем
AddHandler application/x-httpd-php .html
Вместо .html — можно ставить и другие расширения
6. Переадресация на другой сайт
Данное правило перенаправляет всех посетителей, кроме определенных ip на другой сайт
ErrorDocument 403 http://www.yoursitename.ru
Order deny,allow
Deny from all
Allow from 12.345.678.90
Allow from 12.345.678.92
7. Как перенаправить посетителей на страницу поддержки во время отладки сайта
Представьте ситуацию, что вы что-то исправляете на вашем сайте или вообще только его запустили и хотите протестировать. Для этого вам скорее всего понадобится так званная страничка поддержки на которую вы будете перенаправлять посетителей, при этом нужно указать свой ip адрес при заходе с которого, вы сможете зайти на сайт.
RewriteEngine on
RewriteCond %{REQUEST_URI} !/informpage.html$
RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90
RewriteRule $ http://yoursitename.ru/informpage.html [R=302,L]
Просмотр сайта будет доступен с ip-адреса — 12.345.678.90
8.Запрет на просмотр директорий.
Допустим у вас на сайте есть много папок, например, plugins — и вы не хотите, чтобы кто-то когда набрал адрес этой папки видел её содержимое, для этого создаем правило
Options All -Indexes
9. Блокировка доступа к файлу
order allow,deny deny from all
В первой строке необходимо указать файл
10. Блокировка юзеров по ip
Order Deny,Allow
Deny from 12.345.678.90
Deny from 90.876.543.
Deny from .tvoe.tv
Allow from all
При этом будут заблокированы юзер с ip 12.345.678.90 все посетители с ip, попадающими в диапазон от 90.876.543.0 до 90.876.543.255 и все посетители от провайдера tvoe.tv
11. Как убрать из урла ненужное слово
По умолчанию на wordpress стоит адрес вида http://www.site.com/blog/category/wordpress Но в урле нам category ничего не дает, следущим правилом мы его уберем
RewriteRule ^category/(.+)$ httр://www.yourblog.com/$1 [R=301,L]
12. Перенаправляем RSS ленту WordPress на FeedBurner с помощью .htaccess
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ httр:
//feeds2.feedburner.com/wordpress[R=302,NC,L]
13. Закрываем администраторский раздел от чужих глаз (IP адресов)
Этим правилом можно закрыть доступ к админке сайта для всех, кроме определенный ip адресов. Помните, что этих строк может быть несколько или, если Вы используете блок адресов, они могут быть записаны в соответствии с правилами IP адресации, к примеру так: 77.77.77.0/255.255.255.0
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName
"Example Access Control"
AuthType Basic
order deny,allow
deny from all
allow from xx.xx.xx.xx
14. Сжимаем статические данные
это правило позволит сжимать некоторые статические файлы, такие как html, css, js
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
15. Вариант кеширования файлов
#кэширование html и htm на сутки
".(html|htm)$"
>
Header set Cache-Control
"max-age=43200"
#кэширование css, javascript и txt-файлов на неделю
".(js|css|txt)$"
>
Header set Cache-Control
"max-age=604800"
#кэширование flash и картинок на месяц
".(flv|swf|ico|gif|jpg|jpeg|png)$"
>
Header set Cache-Control
"max-age=2592000"
#запрет на кэширование скриптов
"\.(pl|php|cgi|spl|scgi|fcgi)$"
>
Header unset Cache-Control
Параметр max-age приведен в секундах.
16. Принудительное сохранение файла вместо открытия
AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4
17. Устанавливаем кодировку
AddDefaultCharset UTF-8