Статьи Всё о .htaccess

Discussion in 'Статьи' started by SanyaX, 22 Jun 2006.

  1. SanyaX

    SanyaX .::Club Life::.

    Joined:
    28 Jan 2005
    Messages:
    935
    Likes Received:
    396
    Reputations:
    261
    Для чего служит .htaccess?

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

    Вы можете создаватьнесколько файлов .htaccess — по одному для каждой директории на вашем сайте.

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

    Если файл .htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех директорий, где находится другой файл .htaccess (и кроме всех папок "ниже" этой папки со вторым .htaccess).

    Поскольку файл .htaccess является служебным, то он не доступен веб-пользователю из браузера.

    Пример:

    Структура ваших директорий на сервере такая: (серым цветом отмечены директории в которых нельзя устанавливать файл .htaccess

    Действие .htaccess автоматически распространяется на все вложенные директории. Таким образом будут действовать следующие файлы .htaccess:
    Директория Действующие .htaccess[color]
    /www/ /www/.htaccess
    /www/news/ /www/.htaccess
    /www/news/.htaccess
    /www/news/2003.10/ /www/.htaccess
    /www/news/.htaccess
    /www/news/2003.10/.htaccess
    /www/news/2003.11/ /www/.htaccess
    /www/news/.htaccess
    /www/data/ /www/.htaccess
    /www/data/.htaccess
    /www/images/ /www/.htaccess

    Правила написания .htaccess

    пути к файлам (директориям) указываются от корня сервера.

    Правильный пример:

    DirectoryIndex /home/st1331/www/data/main.html

    Ошибка:

    DirectoryIndex /www/news/main.html

    Адресация к документам, расположенным на других сайтах должно выполняться с указанием протокола


    Правильный пример:

    Redirect /oldsite/ http://www.site.ru/

    Ошибка:

    Redirect /oldsite/ www.site.ru/

    Комментарии - строки, начинающиеся с символа #.

    В выражениях можно использовать переменные окружения, например %{REMOTE_ADDR} или %{HTTP_REFERER}.

    Файл .htaccess должен быть записан в UNIX-формате — это означает что перевод строки должен задаваться в нем одним символом (0x0A), а не двумя (0x0D 0x0A), как в DOS или Windows
    Определение области действия директив

    Директива Files

    Описание: дириктива Files ограничивает действие директив одним файлом
    Syntax: <Files filename> ... </Files>
    filename имя файла
    Пример:

    <Files my_secure_document.html>
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.1
    </Files>

    Директива FilesMatch

    Oписание: дирктива Files ограничивает действие директив одним файлом
    Syntax: <Files regex> ... </Files>
    regexp: регулярное выражение (шаблон), описывающее группу файлов.
    Пример:

    <FilesMatch ".(gif|jpe?g|png)$">
    Order Allow,Deny
    Allow from all
    Deny from 192.168.1.1
    </Files>

    Перенаправления (редиректы)
    Директива Redirect

    Описание: Выполняет редирект посетителя, запрашивающего документ на другой URL. Выполняет внешний редирект (сообщая браузеру о необходимости загрузить другой URL).
    Синтаксис: Redirect [status] URL-path URL
    status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 — документ перемещен постоянно), temp (302 — документ перемещен временно), seeother (303 — смотрите другой), gone (410 — убран).
    URL-path: локальная часть URL запрашиваемого документа.
    URL: URL куда должен быть выполнен редирект

    Redirect temp / http://www.iho.ru/newyear.html
    Redirect temp /index.html http://www.iho.ru/newyear.html
    Redirect permanent /prices2002.html http://www.iho.ru/prices2003.html

    Директива RedirectMatch

    Описание: Выполняет редирект посетителя, запрашивающего документ на другой URL. Выполняет внешний редирект (сообщая браузеру о необходимости загрузить другой URL). Директива аналогична Redirect, за исключением того, что вместо адреса запрашиваемого документа пишется регулярное выражение (шаблон)
    Синтаксис: Redirect [status] regexp URL
    status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 — документ перемещен постоянно), temp (302 — документ перемещен временно), seeother (303 — смотрите другой), gone (410 — убран).
    URL-path: локальная часть URL запрашиваемого документа.
    regexp: регулярное выражение (шаблон), описывающее группу URL-ей.

    RedirectMatch (.*).gif$ http://www.myserver.com$1.png
    RedirectMatch (.*.jpg)$ http://www.myanother.com$1


    Пример: разные страницы, в зависимости от IP адреса посетителя. В примере посетители с адреса 192.168.1.1 перенаправляются на другую страницу

    RewriteCond %{REMOTE_ADDR} 192.168.1.1
    RewriteRule ^/$ /anoter_index_pahe.html [L]


    Пример: разные страницы, в зависимости от ссылающейся страницы. В примере посетители, приходящис со страницы http://www.partner.ru/ вместо /prices.html получают /anoter_prices.html

    RewriteCond %{HTTP_REFERER} http://www.partner.ru/recep.html
    RewriteRule ^/prices.html$ /anoter_prices.html [L]
    Перенаправление посетителя при запросе определенных страниц:

    Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft:

    redirect /_vti_bin http://www.microsoft.com
    redirect /scripts http://www.microsoft.com
    redirect /MSADC http://www.microsoft.com
    redirect /c http://www.microsoft.com
    redirect /d http://www.microsoft.com
    redirect /_mem_bin http://www.microsoft.com
    redirect /msadc http://www.microsoft.com
    RedirectMatch (.*)cmd.exe$ http://www.microsoft.com$1

    Ограничение доступа (пароли)

    Директива Order

    Описание: Устатавливает порядок работы директив Deny и Allow
    Синтаксис: Order порядок
    порядок может принимать значения Deny,Allow или Allow,Deny
    По умолчанию: Order Deny,Allow

    Директива Denyv

    Описание: Запрещает доступ определенных клиентов к ресурсам.
    Синтаксис: Deny from all|host
    host может принимать значения IP адреса или имени хоста.

    Директива Allow

    Описание: Разрешает доступ определенных клиентов к ресурсам.
    Синтаксис: Deny from all|host
    host может принимать значения IP адреса или имени хоста.


    Пример: запрет на доступ для всех

    Order Deny,Allow
    Deny from all


    Пример: разрешение на доступ для определенных IP адресов

    Order Deny,Allow
    Deny from all
    Allow from .iho.ru
    Allow from 192.168.1.1


    Пример: запрет на доступ для всех за исключением определенных IP адресов

    Order Allow,Deny
    Allow from all
    Deny from .iho.ru
    Deny from 192.168.1.1


    Пример: запрет на доступ для определенный файл. В примере запрещается доступ к файлу .htpasswd для всех посетителей

    <Files ".htpasswd">
    Order Deny,Allow
    Deny from all
    </Files>


    Пример: запрет на доступ для определенной группы файлов. В примере запрещается доступ к файлам с расширениями "lib" и "pm" для всех посетителей

    <FilesMatch ".(lib|pm)$">
    Order Deny,Allow
    Deny from all
    </FilesMatch>

    Установка пароля на доступ

    Директива AuthName

    Описание: значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации.
    Директива AuthType

    Описание: Эта директива выбирает тип аутентификации. Возможны следующие типы: Basic and Digest.
    Синтаксис: AuthType Basic|Digest

    Директива AuthUserFile

    Описание: значение AuthUserFile указывает имя файла с паролями для аутентификации пользователей. Файл с паролями может быть создаен утилитой htpasswd. Путь к файлу с паролями задается относительно корня веб-сервера. Храните файл с паролями в папке, доступ к которой закрыт для пользователей..
    Синтаксис: AuthUserFile путь-к-файлу
    Директива Require

    Описание: Определяет пользователей, которые могут получить доступ
    Синтаксис: Require имя-пользователя|valid-user
    Указывая valid-user вы разрешаете доступ всем пользователям, перечисленным в файле паролей.

    Пример: разрешает доступ директории всем пользователям:

    AuthName "Restricted area"
    AuthType Basic
    AuthUserFile /home/st1331/www/data/.htpasswd
    Require valid-user


    Пример: разрешает доступ к директории только 3-м пользователям:

    AuthName "Very restricted area"
    AuthType Basic
    AuthUserFile /home/st1331/www/data/.htpasswd
    Require antonio solo marina


    Пример[/b]: ограничение доступа к определенным файлам (в этом примере ограничен доступ к zip архивам)

    <FilesMatch ".zip$">
    AuthName "Only valid users can download zip files."
    AuthType Basic
    AuthUserFile /home/st1331/www/data/.htpasswd
    Require valid-user
    </FilesMatch>


    Пример: ограничение доступа к одному файлу (в этом примере ограничен доступ к файлу .htpasswd )

    <Files ".htpasswd">
    AuthName "Access restricted."
    AuthType Basic
    AuthUserFile /home/st1331/www/data/.htpasswd
    Require antonio solo
    </Files>

    Управление сервером
    Директива DirectoryIndex - изменения страницы по умолчанию (стартовой)

    Описание: Позволяет изменить страницу, которая будет показываться при обращении к директории
    Синтаксис: DirectoryIndex page [page]
    page - название стартовой страницы. Может быть указано несколько страниц.
    Пример:

    DirectoryIndex main.html index.php test.shtml
    Директива ErrorDocument - обработка ошибок

    Описание: позволяет устанавливать альтернативные страницы ошибок
    Синтаксис: ErrorDocument code URL-path
    URL-path - локальный адрес страницы
    code - код ошибки. Наиболее типичные коды ошиброк:
    401 — Требуется авторизация (Authorization Required)
    403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided)
    404 — запрашиваемый документ (файл, директория) не найден (Not Found)
    500 — внутренняя ошибка сервера — ошибка скрипта или ошибка в синтаксисе файла .htaccess - (Internal Server Error)


    ErrorDocument 401 /401.html
    ErrorDocument 403 /403.html
    ErrorDocument 404 /404.html
    ErrorDocument 500 /500.html

    Директива AddOutputFilter - установка фильтра (SSI[)

    <FilesMatch ".(mytype)$">
    SetOutputFilter INCLUDES
    </Directory>

    Директива SetHandler - установка обработчика (PHP, Parser)

    Описание[/b]: устанавливает обработчик для файлов в заданной директории
    Синтаксис: SetHandler handler-name


    SetHandler php-script
    Директива AddHandler - установка обработчика (PHP, Parser)

    Описание: устанавливает обработчик для файлов указанного типа
    Синтаксис: AddHandler handler-name filename-extension


    AddHandler php-script .html
    AddHandler parser-script .htm

    Директива AddDefaultCharset - установка обработчика (PHP, Parser)

    По умолчанию на сервере установлена кодировка Windows-1251

    AddDefaultCharset koi8-r
    Как заставить Апач обрабатывать SSI директивы?

    SSI позволяют "собирать" страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в httpd.conf: В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes. После, в файле .htaccess пишем:

    AddOutputFilter Includes .html .htm[i/]
    Как поставить запрет на отображение содержимого директории при отсутствии индексного файла?

    Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем:
    htpasswd

    Директива htpasswd служит для создания файла с паролями, который может быть использован при аутентификации пользователей веб-сервером.

    Пример: создание файла с паролями и добавление в него 1 имени:

    htpasswd -c Filename username

    Пример: Добавление или изменение файла с паролями

    htpasswd Filename username2
    Добавил файл .htaccess, и теперь сервер выдает 500 ошибку. Почему?

    500-я ошибка может быть вызвана следующими причинами:
    1. неверный синтаксис .htaccess
    2. файл .htaccess записан в формате Windows, а должен быть записан в формате UNIX

    Источник
    http://library.hosting-design.net/0/027/article/
     
    7 people like this.
  2. rent0n

    rent0n Elder - Старейшина

    Joined:
    25 Dec 2005
    Messages:
    119
    Likes Received:
    19
    Reputations:
    2
    как ликбез сойдет
     
  3. life4hack

    life4hack New Member

    Joined:
    16 Aug 2006
    Messages:
    10
    Likes Received:
    2
    Reputations:
    0
    я не знаю как вы все относитесь, к тому что люди берут чужие статьи и выкладывают их(пусть даже сказав что не им принадлежат), но мне кажется это неверным подходом. я думаю надо выкладывать то что сам хорошо знаешь и можешь это рассказать в мельчайших подробностях. а то что взять и выложить чужое это каждый может.(ИМХО)
    я не говорю про конкретного человека, но смотрю это популярным стало.
     
    1 person likes this.
  4. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    life4hack ты не прав.

    гы бывает такое что эта статья пошла по рукам гы типа один гвоорит, что её написал, то другой гы. кому верить? забей и не парься, главное чтобы статья рулиа и приносила пользу
     
  5. [hidden]

    [hidden] Elder - Старейшина

    Joined:
    5 Nov 2005
    Messages:
    70
    Likes Received:
    19
    Reputations:
    7
    На самом деле пофиг, в каком формате записан .htaccess, в UNIX-формате или в Windows.. Работает и так и так, просто при переносе с винды на юникс, а потом снова на винду станет вдвое больше пустых строк, что не так страшно=)

    Проверено лично.
     
    1 person likes this.
  6. syntacsis

    syntacsis Elder - Старейшина

    Joined:
    14 Nov 2005
    Messages:
    78
    Likes Received:
    31
    Reputations:
    6
    Дальше читать нет никакого желания. Такому аффтору надо поучиться самому прежде чем других учить.
    Мануалы по .htaccess есть в немалом количестве. =) От того что их кто-то перепишет, да еще так неграмотно, толку мало, один вред =)
     
  7. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    ни фига ни так.
     
  8. Azazel

    Azazel Заведующий всем

    Joined:
    17 Apr 2005
    Messages:
    918
    Likes Received:
    213
    Reputations:
    154
    И даже эти мануалы, которые есть, почти слово в слово совпадают.
    И какая нафиг разница кто источник, если ищешь по .htaccess что-то конкретное, а рунет тебе предлагает сотню сайтов с переписанными друг у друга статьями.

    Херово, господа. Так надоело это копи-пасте.
     
  9. SanyaX

    SanyaX .::Club Life::.

    Joined:
    28 Jan 2005
    Messages:
    935
    Likes Received:
    396
    Reputations:
    261
    На ачаье не было. Нашёл скопипастил формил в нужный вид. А воще наверно своих статьи начну писать.
     
  10. zL0Bniy keNt

    zL0Bniy keNt Elder - Старейшина

    Joined:
    10 Sep 2006
    Messages:
    25
    Likes Received:
    22
    Reputations:
    -6
    да...можешь написать какими прогами можно взломать сайты кроме,хинча и пинча...
     
  11. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    .....И почему все нубики упорно верят что всё делается "какими-то прогами"....
     
    _________________________
    3 people like this.
  12. LoFFi

    LoFFi Elder - Старейшина

    Joined:
    21 Feb 2006
    Messages:
    194
    Likes Received:
    90
    Reputations:
    85
    Буггагааа! Пацталом. Ксинч и пинч уже атакуют сайты =) Они случаем не рутают сервак сразу? А че, было бы не плохо =)
     
  13. zL0Bniy keNt

    zL0Bniy keNt Elder - Старейшина

    Joined:
    10 Sep 2006
    Messages:
    25
    Likes Received:
    22
    Reputations:
    -6
    можно лучше их в жопу поиметь,да?
     
  14. byte57

    byte57 Elder - Старейшина

    Joined:
    22 Jan 2005
    Messages:
    568
    Likes Received:
    13
    Reputations:
    24
    Я конечно понимаю, что рассуждать удобнее по личному опыту, но антчиат тебе не форум педерастов.
     
  15. SanyaX

    SanyaX .::Club Life::.

    Joined:
    28 Jan 2005
    Messages:
    935
    Likes Received:
    396
    Reputations:
    261
    Хватит флудить в моей теме. Тем более вопросы идут не по статье!