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

1. Перенаправление на любую страницу при обработке ошибок на сервере (например, ошибка 401, 403, 404, 500);
2. Редирект на любую страницу по ip пользователя или при запросе конкретной страницы (а также по маске имени);
3. Редирект при запросе определённых файлов;
4. Редирект по префиксу www (301 редирект);
5. Запрещение доступа в конкретную директорию для всех;
6. Разрешение доступа в директорию по паролю (работает совместно с файлом .htpasswd) или по определённому ip пользователя;
7. Полный редирект.

Файл .htaccess легко создать с помощью программы Блокнот. Заливать его следует в корень необходимой директории. Если в вложенных директориях нет своего файла .htaccess, то будет оказываться действие на все вложенные директории.

Пути в файле необходимо указывать абсолютные от корня сервера. Узнать путь можно у хостера или самостоятельно. Для этого нужно создать файл PHP с любым именем и запустить его на сервере:

<?php
phpinfo();
?>

В информации об установленном PHP (doc_root, open_basedir, DOCUMENT_ROOT) ищем полный абсолютный путь.

Для корректной работы файла .htaccess необходимо чтобы он был разрешён в главном файле конфигурации httpd.conf и, как правило, все хостинги разрешают это.

А теперь приведём примеры, как правильно использовать файл .htaccess.

1. Перенаправление на любую страницу при обработке ошибок на сервере (например, ошибка 401, 403, 404, 500). При возникновении (определении) этих ошибок пользователь будет перенаправлен на соответствующие страницы:

ErrorDocument 401 /error-401.php
ErrorDocument 403 /error-403.php
ErrorDocument 404 /error-404.php
ErrorDocument 500 /error-500.php

или на главную страницу:

ErrorDocument 401 /index.php
ErrorDocument 403 /index.php
ErrorDocument 404 /index.php
ErrorDocument 500 /index.php

2. Редирект на любую страницу по ip пользователя или при запросе конкретной страницы (а также по маске имени). Если у пользователя ip 192.152.37.125, то он будет перенаправлен на страницу user.php:

SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /user.php

если запрашиваются определённые страницы, то пользователь будет перенаправлен на другие страницы:

redirect /secret http://www.site.ru/nosecret

3. Редирект при запросе определённых файлов. Если запрашиваются файлы, расширение которых не указано в файле .htaccess (gif и jpg), то следует перенаправление:

RewriteEngine On
RewriteRule !.(gif|jpg)$ index.php

4. Редирект по префиксу www (301 редирект).

- с site.ru на www.site.ru:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^site$
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

- с www.site.ru на site.ru:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).site.ru$
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

5. Запрещение доступа в конкретную директорию

- для всех:

deny from all

- к конкретному файлу:

<Files secret.php>
deny from all
</Files>

6. Разрешение доступа в директорию по паролю (работает совместно с файлом .htpasswd) или по определённому ip пользователя.

- по паролю:
Нужны два файла .htaccess и .htpasswd

В файле .htaccess пишем:

AuthName "Danger! Adminka!" (текст предупреждающей надписи)
AuthType Basic
require valid-user (войдёт любой, кто ввёл правильный пароль)
AuthUserFile /home/site.ru/www/adminka/.htpasswd (абсолютный путь к .htpasswd)

В файле .htpasswd указывается пароль. Создать этот файл можно с помощью htpasswd.exe, которая расположена в директории bin сервера.
Создание файла .htpasswd:
1. в командной строке перейдите в директорию bin
2. введите: htpasswd -cm .htpasswd admin
3. утилита запросит ввод пароля два раза, введите его
4. если всё сделали успешно, то увидите Adding password for user admin
5. файл .htpasswd сгенерируется в папке bin.

Затем заливаем оба файла в нужную директорию, и при входе в неё будет запрашиваться логин и пароль. Ваша директория защищена!

- по ip пользователя:

order deny,allow
deny from all
allow from 192.152.37.125

Доступ в данную директорию будет разрешён только пользователю с ip 192.152.37.125.

7. Полный редирект.

Redirect / http://www.newsite.ru