Внешний вид сайта:

Пример настройки файла htaccess

Примеры записей в htaccess: Индексный файл, Редирект с сохранением рейтинга страницы, Склеивание www и http, Создание ЧПУ или ЧеловекуПонятныхУрлов, Редирект всех файлов папки на один файл, Защита от хотлинков, Определение кодировки и многое другое!

Что такое .htaccess?

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

Где располагается htaccess?

Как правило, находится в корне сайта, но может быть ещё и в других директория, и в принципе их может быть несколько - с настройками под каждую папку. Представляет из себя текстовой документ с расширением .htaccess. Можно открыть любым текстовым редактором.

Зачем нужен и какие функции выполняет htaccess?

С помощью файла .htaccess (всё правильно, впереди точка) можно:

1. указать и управлять конфигурациями и настройками права доступа к директориям и файлам
2. осуществлять редирект (пересылку на другой адрес)
3. прописывать название индексных файлов
4. создавать ЧПУ - человеку-понятные-урлы
5. скрывать директории и файлы
6. обрабатывать ошибки и многое другое
7. склеивать сайт с www и без
8. определить кодировку файлов и данных
9. защищать сайт от хотлинков (удалённого использования файлов сервера)
10. работать с кэшем

Директивы модуля Mod_rewrite

Mod_rewrite - основной модуль, часто используемый веб-серверами для преобразования URL'ов.
RewriteBase - устанавливает базовый URL для преобразований в контексте каталога
RewriteCond - определяет условие при котором происходит преобразование
RewriteEngine - включает или выключает работу механизма преобразования
RewriteLock - определяет имя файла синхронизации
RewriteLog - устанавливает имя файла в котором сервер ведет журнал любых происходящих действий по преобразованиям URL
RewriteLogLevel - устанавливает уровень детализации журнала механизма преобразований
RewriteMap - определяет функцию создания ассоциативного массива для поиска по ключу
RewriteOptions - утанавливает специальные опции для механизма преобразований
RewriteRule - определяет правила для механизма преобразований (может упоминаться более одного раза)

Выше изложена основная информация, которую вам необходимо знать о файлах htaccess перед тем как перейти к настройке. А теперь, пожалуй, начнем.

Указываем индексный файл

DirectoryIndex index.php index.html index.shtml

Можно указать один или несколько файлов

Редирект htaccess php

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"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /out.html

Конкретного пользователя (надоел он или нужно его переслать на внутренний раздел) с данным ip пересылает на страницу /out.html

Склеивание www и http htaccess php

Уже многим 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

Создание ЧПУ или Человеко-Понятных-Урлов htaccess php

RewriteEngine on
RewriteRule ^article/([^/\.]+)/?$ article.php?id=$1 [L]

После добавления данной строки в .htaccess будут доступны два адреса для документа. Например: www.yoursite.ru/article.php?id=1 и www.yoursite.ru/article/1

RewriteEngine on
RewriteRule cat/(.*)/(.*)/$ /art.php?$1=$2

В результате www.yoursite.ru/art.php?type=123 превращается в www.yoursite.ru/cat/type/123/:

Вот ещё частные варианты:

RewriteEngine on
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]

Защита от хотлинков htaccess php


Возможно Вам знаком такой вариант, когда изображения на сервер не закачивают, а используют просто ссылку на сайт. В результате для сайта-владельца изображения создаётся лишняя нагрузка трафик. Используем код ниже

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 php


Дополнительные варианты самых популярных кодировок: UTF-8, Windows-1251, KOI8-R. В примерах рассмотрим самую распространённую UTF-8

AddDefaultCharset UTF8 # кодировка файлов, в которой по умолчанию отдаёт документы
AddCharset UTF8 .html # Пример: обрабатывает в данной кодировке html
AddCharset UTF8 * # Пример: обрабатывает в данной кодировке Все файлы

# Обработка в данной кодировке определённого файла
<files "index.html">
AddCharset UTF8 .html
 

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

Закрываем конкретный файл от всех

deny from all

Разрешаем доступ только с одного ip

order deny,allow
deny from all
allow from 192.111.37.125

Запрещаем доступ с конкретных ip

order allow,deny
allow from all
deny from 192.111.35.122
deny from 192.111.37.171

Убираем из Урла (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

При индексации сайтов часто возникает проблема нескольких адресов главной страницы. Как правило, достаточно доменного имени http://yoursite.ru , однако некоторые сайты проиндексированы ещё и с http://yoursite.ru/index.php . И первый, и второй случай - это главная страница, но с доступом по двум адресам. Так быть не должно, так как две страницы с одним содержанием отнимают друг у друга вес.

Проблема решает редиректом на адрес без index.php . Чаще всего для решения данного вопроса используют файл htaccess (Что такое файл .htaccess?) и его настройки (директиву mod_rewrite).


Код .htaccess

RewriteEngine On
RewriteRule ^index.php$ / [QSA,R]

После этого сслыка http://yoursite.ru/index.php будет автоматически превращаться в http://yoursite.ru, а http://yoursite.ru/index.php?login=Kesha в http://yoursite.ru/?login=Kesha .

Также можно настроить и под index.html и другие расширения индексного файла.

Комментарии

Нет комментариев. Ваш будет первым!