Используем файл .htaccess в Apache

01.12.2010 - 09:09

С помощью файла .htaccess, можно дополнительно настроить web-сервер Apache. Он позволяет настроить доступ в отдельных директориях web-сервера, без изменения главного конфигурационного файла httpd.conf. Для того, что бы Apache видел файл .htaccess, необходимо добавить в конфиг:

[root@router /usr/local/etc/apache]# cat /usr/local/etc/apache/httpd.conf | grep htaccess
AccessFileName .htaccess

<Directory "/usr/local/www">
    Options Indexes FollowSymlinks MultiViews                                      
    AllowOverride All # по дефолту AllowOverride AuthConfig
    Order deny,allow
    Allow from all
</Directory>  

Доступ на директорию по логину/паролю
Создаем файл в /usr/local/www/data:

[root@router /usr/local/www/data/]#cat > /usr/local/www/data/.htaccess
AuthName "Admin level:"
AuthType Basic
AuthUserFile /usr/local/www/adm/passwd
require valid-user

Теперь генерируем файл логина/пароля /usr/local/www/adm/passwd:

[root@router /usr/local/www]# htpasswd -c /usr/local/www/adm/passwd vlymar
New password:
Re-type new password:
Adding password for user vlymar
[root@router /usr/local/www]#

Установка пароля на один конкретный файл:
Пример установки пароля на файл arch.7z:

<files arch.7z="">
AuthName "Users files:"
AuthType Basic
AuthUserFILE /usr/local/www/adm/passwd
</files>

Установка пароля на группу файлов с расширением - "jpg":

<files ?\.(jpg)$?="">
AuthName "Users files:"
AuthType Basic
AuthUserFILE /usr/local/www/adm/passwd
</files>

Редирект (перенаправление):

[root@router /usr/local/www/data/]#cat > /usr/local/www/data/.htaccess
# Перенаправляем с текущей директории на сайт lymar.no-ip.org.
Redirect / http://lymar.no-ip.org

Постраничный редирект

[root@router /usr/local/www/data/]#cat > /usr/local/www/data/.htaccess
Redirect /test1/land.html http://lymar.no-ip.org/cad/page1.html

Перенаправляем адреса без www на адреса с www:

   RewriteEngine On
   RewriteCond %{HTTP_HOST} ^unix\.ck\.ua$ [NC]
   RewriteRule ^(.*)$ http://www.unix.ck.ua/$1 [L,R=301]

Перенаправление домена www.test.com в поддомен или подкаталог на сервере(http://www.test.com/new/):

      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^test\.com$ [OR]
      RewriteCond %{HTTP_HOST} ^www\.test\.com$
      RewriteCond %{REQUEST_URI} !^/new/
      RewriteRule (.*)   /new/$1

Листинг файлов
#Запрет выдачи списка каталога без файла index.*
Options All -Indexes

Разрешаем листинг файлов на сервере:

Options Indexes

Запрещаем показ определенных типов файлов по расширению:

IndexIgnore *.txt *.jpg

Запрещаем доступ на один конкретный файл:

<files index2.php="">
order allow,deny
deny from all
</files>

Доступ по IP
Разрешаем доступ всем, кроме определенного IP, в данном случае - 192.168.25.1.

Order Allow, Deny
Allow from All
Deny from 192.168.25.1

Запрещаем доступ всем, кроме IP-192.168.25.1, 192.168.25.3:

Order Deny, Allow
Deny from All
Allow from 192.168.25.1
Allow from 192.168.25.3

Ваша оценка: Нет Средняя: 3.3 (6 votes)

Комментарии:


я сделал так:

cat /usr/local/etc/apache22/extra/httpd-vhosts.con

<VirtualHost *:80>

        DocumentRoot "/usr/local/www/adidonntu"
        ServerName adidonntu.org.ua
        ServerAlias adidonntu.org.ua

</VirtualHost>

cat /usr/local/www/adidonntu/index.php

<?php header('Location: http ://www.adidonntu.org.ua'); ?>