Полезные фишки .htaccess

руководство использования .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

This article was updated on август 19, 2024

You should also read:

Практические решения по использованию файла .htaccess

Для чего служит .htaccess?

Набирая адрес в строке браузера, вы получаете на свой компьютер файлы, которые отображает браузер. Управление тем, какие файлы и как вам показывать (пересылать) осуществляет веб-сервер. Наиболее популярных серверов два: IIS и Apache.

Как и любая программа, веб-сервер имеет определенные настройки. Но, у вас, как пользователя Апача может (и скорее всего не будет, если говорить о виртуальном хостинге) прав менять конфигурацию Апача через его главные файлы, действие которых распространяется на всех пользователей этого сервера. Но, вы можете менять некоторые конфигурационные файлы, который распространяют свое действие только на ваш сайт. Один из таких файлов - .htaccess

Не работает .htaccess?

Недавно столкнулся с такой проблемой - .htaccess на моём Apache под Windows почему-то не работал. Сейчас расскажу как я справился с этим делом.

Во первых следует проверить свой httpd.conf файл, в котором расположены все настройки web-сервера. Проверяем наличие данной строки:

AccessFileName .htaccess

  • © Massively
  • Design: HTML5 UP
  • Powered by Publii