Пример настройки файла htaccess
Примеры записей в htaccess: Индексный файл, Редирект с сохранением рейтинга страницы, Склеивание www и http, Создание ЧПУ или ЧеловекуПонятныхУрлов, Редирект всех файлов папки на один файл, Защита от хотлинков, Определение кодировки и многое другое!
Указываем индексный файл (который первым открывает при обращении к сайту)
DirectoryIndex index.php index.html index.shtml
Можно указать один или несколько файлов
Редирект htaccess
Redirect / http://www.newsite.ru/
Глобальный редирект(первый /) ВСЁ пересылаем на новый адрес http://www.newsite.ru/
Redirect /katalog http://www.newsite.ru/newkatalog
Все обращения к katalog переадресуем на домен newsite.ru в раздел newkatalog
Редирект с сохранением рейтинга страницы
Redirect 301 /old/old.php http://www.yoursite.ru/new.php
old – пример пути старой страницы. new – пример пути новой страницы.
Редирект пользователя с конкретным ip
SetEnvIf REMOTE_ADDR 192.100.220.1 REDIR="redir"<br > RewriteCond %{REDIR} redir<br > RewriteRule ^/$ /out.html
Конкретного пользователя (надоел он или нужно его переслать на внутренний раздел) с данным ip пересылает на страницу /out.html
Склеивание адреса с www и без www
Уже многим SEO (продвижение и оптимизация) известно, что для Поисковых Систем адреса с/без www – это разные адреса и доступность сайта с www отрицательно влияет на индексацию и ранжирование. Поэтому зачастую SEO просят разработчиков склеить сайт без www (чтобы при обращении к сайту с www происходила пересылка на без www, т.е. только http)
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.yoursite\.ru$ [NC] RewriteRule ^(.*)$ http://yoursite.ru/$1 [L,R=301]
Теперь даже если Вы наберёте в адресной строке www.yoursite.ru, то сервер перешлёт Вас на http://yoursite.ru
Создание ЧПУ или Человеко-Понятных-Урлов
RewriteEngine on RewriteRule ^article/([^/\.]+)/?$ article.php?id=$1 [L]
После добавления данной строки в .htaccess будут доступны два адреса для документа. Например: www.yoursite.ru/article.php?id=1 и www.yoursite.ru/article/1
RewriteEngine on<br > RewriteRule cat/(.*)/(.*)/$ /art.php?$1=$2
В результате www.yoursite.ru/art.php?type=123 превращается в www.yoursite.ru/cat/type/123/:
Вот ещё частные варианты:
RewriteEngine on<br > RewriteRule katalog-saitov[/]*$ article.php?id=$1 [L]
Статья с технически адресом www.yoursite.ru/article.php?id=1 теперь будет доступна со своим понятным человеку названием www.yoursite.ru/katalog-saitov.
Редирект всех файлов папки на один файл
Например вы больше не нуждаетесь в разделе сайта articles и хотите перенаправить все запросы к папке /articles на один файл /non-articles.php. Поможет код ниже
RewriteRule ^articles(.*)$ /non-articles.php [L,R=301]
Защита от хотлинков
Возможно Вам знаком такой вариант, когда изображения на сервер не закачивают, а используют просто ссылку на сайт. В результате для сайта-владельца изображения создаётся лишняя нагрузка трафик. Используем код ниже
RewriteEngine On #В строке с ?yoursite\.ru/ меняете данную конструкцию на УРЛ Вашего сайта RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.ru/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Меняем /images/exit.jpg на другое изображение. Можно неприличное RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/exit.jpg [L]
Определение кодировки htaccess
Дополнительные варианты самых популярных кодировок: UTF-8, Windows-1251, KOI8-R. В примерах рассмотрим самую распространённую UTF-8
AddDefaultCharset UTF8 # кодировка файлов, в которой по умолчанию отдаёт документы AddCharset UTF8 .html # Пример: обрабатывает в данной кодировке html AddCharset UTF8 * # Пример: обрабатывает в данной кодировке Все файлы # Обработка в данной кодировке определённого файла <Files "index.html"> AddCharset UTF8 .html </Files> CharsetDisable On # Отменяем перекодировку Сервером загруженных файлов CharsetDefault UTF8 # Кодировка, передаваемая Сервером Браузеру по умолчанию CharsetSourceEnc UTF8 # Принудительная Перекодировка ВСЕХ загруженных на сервер файлов
Создание своих страниц ошибок
Если Вам хочется видеть после неправильной ссылки другую страницу, сделанную, например, самим собой, то указываем в .htaccess следующий код (ну и соответственно делаем там свои страницы):
# ошибка сервера, неверный запрос ErrorDocument 400 /error/badrequest.html # неавторизован ErrorDocument 401 /error/authreqd.html # вход запрещён ErrorDocument 403 /error/forbid.html # самая распространённая - страница не найдена ErrorDocument 404 /error/notfound.html # внутренняя ошибка сервера ErrorDocument 500 /error/serverr.html
Видов ошибок на самом деле больше. Можете создать дополнительно и для них записи, опираясь на весь список |
Запрещаем доступ
Скорее всего Вы столкнётесь с тем, что часть файлов и директорий надо будет закрыть от общего доступа.
Закрываем от всех
deny from all
Закрываем конкретный файл от всех
<Files admin.php> deny from all </Files>
Разрешаем доступ только с одного ip
order deny,allow deny from all allow from 192.111.37.125
Запрещаем доступ с конкретных ip
<Limit GET POST PUT> order allow,deny allow from all deny from 192.111.35.122 deny from 192.111.37.171 </LIMIT>
Убираем из Урла (URL) расширение файла
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.php # php можно заменить другим расширением. Например: html, htm, shtml, asp
Запрещаем отображать содержимое директории, если нет индексного файла
Вы скорее всего хоть раз видели текст Index of и список файлов. Так происходит в том случае, когда в директории нет индексного файла (например index.php), а система предлагает выбрать файл для дальнейшего открытия. Минус этого заключается в том, что случайный пользователь может увидеть список и содержание всех файлов директории.
Options -Indexes
Запрет на просмотр директорий
Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:
Options All -Indexes
Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:
Options All +Indexes
Ускорение времени загрузки за счет сжатия файлов
Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:
AddOutputFilterByType DEFLATE text/html
Для сжатия текстовых файлов используйте:
AddOutputFilterByType DEFLATE text/plain
Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:
AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml
Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:
<IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text\.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image\.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule>
Кэширование файлов
Кэширование файлов — еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в .htaccess:
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> Header set Cache-Control "max-age=2592000" </FilesMatch>
Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.
Перенаправление на защищенное соединение HTTPS
Если вы используете HTTPS и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}