Указываем индексный файл (который первым открывает при обращении к сайту), можно указать один или несколько файлов:
DirectoryIndex index.php index.html index.shtml
Глобальный редирект(первый /) ВСЁ пересылаем на новый адрес http://www.newsite.ru/
:
Redirect / http://www.newsite.ru/
Все обращения к katalog
переадресуем на домен newsite.ru
в раздел newkatalog
:
Redirect /katalog http://www.newsite.ru/newkatalog
Редирект с сохранением рейтинга страницы, old - пример пути старой страницы, new - пример пути новой страницы:
Redirect 301 /old/old.php http://www.yoursite.ru/new.php
Редирект пользователя с конкретным ip. Конкретного пользователя (надоел он или нужно его переслать на внутренний раздел) с данным ip пересылает на страницу /out.html:
SetEnvIf REMOTE_ADDR 192.100.220.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /out.html
Склеивание www и http apacheconf 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/article.php?id=1
и www.yoursite.ru/article/1
:
RewriteEngine on
RewriteRule ^article/([^/\.]+)/?$ article.php?id=$1 [L]
В результате www.yoursite.ru/art.php?type=123
превращается в www.yoursite.ru/cat/type/123/
:
RewriteEngine on
RewriteRule cat/(.*)/(.*)/$ /art.php?$1=$2
Статья с технически адресом www.yoursite.ru/article.php?id=1
теперь будет доступна со своим понятным человеку названием www.yoursite.ru/katalog-saitov
:
RewriteEngine on
RewriteRule katalog-saitov[/]*$ article.php?id=$1 [L]
Редирект всех файлов папки на один файл. Например вы больше не нуждаетесь в разделе сайта 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]
Определение кодировки, дополнительные варианты самых популярных кодировок: 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 # Принудительная Перекодировка ВСЕХ загруженных на сервер файлов
Создание своих страниц ошибок. Если Вам хочется видеть после неправильной ссылки другую страницу, сделанную, например, самим собой, то указываем в .apacheconf следующий код (ну и соответственно делаем там свои страницы):
# ошибка сервера, неверный запрос
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