|
|
Сайтостроение В этой категории темы о создании сайтов, их раскрутке, скриптах и т.п |
|
Опции темы | Поиск в этой теме |
10.09.2008, 01:23 Вверх | #1 | |||
::.V.I.P.::
|
.htaccess. Инструкция для начинающих
.htaccess. Инструкция для начинающих.
Автор: Spectator Анализируя запросы с поисковых систем, обнаружил, что люди регулярно заходят ко мне по запросам, вроде «синтаксис файла .htaccess» и попадают на разные заметки, но нужной информации у меня не находят, пишут письма и спрашивают, где про это можно почитать «попроще». Итак – по заявкам поисковых систем: .htaccess для чайников. «Нечайники» могут найти кучу документации вот тут. Впрочем, «нечайники» и без того знают. .htaccess – это файл, в котором вы можете прописать настройки вашего сервера (если он – Апач) для директории (и ниже). То есть если вы создадите файл .htaccess в корне сайта, его действие будет распространяться на весь сайт, однако, если в какой-нибудь поддиректории создадите еще один, то он будет «главным» там. Файл .htaccess не будет работать, если а) сервер – не Апач, б) администраторы сервера запретили его использование. Я просто опишу, что знаю сам, и мне этого вполне хватает, и 90% «чайников» должно хватить. Итак, лично в моем .htaccess все выглядит примерно вот так (посточно): DirectoryIndex index.php3 Устанавливает файл в директории, который грузится по «умолчанию». Обычно – index.html. У меня стоит index.php3, поэтому когда вы набираете http://spectator.ru/, грузится файл index.php3 CharsetDefault windows-1251 Кодировка, которую сервер выдает браузеру по умолчанию. То есть у меня файлы выдаются в windows-кодировке. CharsetSourceEnc windows-1251 Кодировка, в которой вы должны закачивать файлы на сервер. У меня опять же стоит windows-1251. Это удобно, когда у тебя операционная система – Win. По умолчанию же стоит koi (koi8-r), что, по-моему, не совсем удобно. ErrorDocument 404 /index.php3 ErrorDocument 401 /index.php3 Файлы, которые выдает сервер, когда страница не найдена (404). Например, вы можете прописать, например, файл 404.html, в котором написать, мол, «документ нот фоунд», или вообще сделать что-то вроде этого. (см. также «PHP и ЧПУ») Options -Indexes Запрещает отображение содеримого директории. Например: http://spectator.ru/images/. Чтобы разрешить, надо написать то же самое, но без «-». Напомню, что разрешать можно выборочно, создав .htaccess там, где нужно, и прописав «Options Indexes». (В принципе, можно прописать это все в одном .htaccess, но данный текст написан для чайников, все-таки)... Потом у меня прописано указание для модуля mod_rewrite для «переписывания» запросов. Переписывание запросов – это, грубо говоря, такая вот фиговинка: человек запрашивает файл, например spectator.ru/issues/284, а сервер ему тихо и незаметно выдает файл spectator.ru/html/284.html (к примеру, на самом деле все не так). См. также «PHP и ЧПУ». Это то же самое, но делано по-другому, более эффективно). Подробно (очень) можно об этом прочитать вот тут по-английски или вот тут по-русски. Вот, собственно, и весь ликбез. Мой .htaccess на этом заканчивается. Для тех, кто в танке: выглядит все содержимое файла .htaccess в конце концов примерно вот так: DirectoryIndex index.php3 CharsetDefault windows-1251 CharsetSourceEnc windows-1251 ErrorDocument 404 /index.php3 ErrorDocument 401 /index.php3 Options -Indexes Надеюсь, кому-то это окажется полезным. Смотри также: – Как поставить пароль на директорию с помощью htaccess – Apache Core Features – Mod_Rewrite Guide – Mod_Rewrite Docs Материалы сайта: www.webscript.ru |
|||
Cказали cпасибо: |
30.11.2008, 20:15 Вверх | #2 | |||
::.V.I.P.::
|
Практические решения по использованию файла .htaccess
Автор: Лео Для чего служит .htaccess? Набирая адрес в строке браузера, вы получаете на свой компьютер файлы, которые отображает браузер. Управление тем, какие файлы и как вам показывать (пересылать) осуществляет веб-сервер. Наиболее популярных серверов два: IIS и Apache. Как и любая программа, веб-сервер имеет определенные настройки. Но, у вас, как пользователя Апача может (и скорее всего не будет, если говорить о виртуальном хостинге) прав менять конфигурацию Апача через его главные файлы, действие которых распространяется на всех пользователей этого сервера. Но, вы можете менять некоторые конфигурационные файлы, который распространяют свое действие только на ваш сайт. Один из таких файлов - .htaccess Это файл гибкой настройки веб-сервера Апач. "Гибкий" обозначает, что как только вы поменяли что-то в этом файле, изменения тут же вступают в силу. С помощью него можно переопределить многие директивы из файла [Только зарегистрированные пользователи могут видеть ссылки] (этот файл является главным конфигурационным файлом сервера Апач и его действия распространяются полностью на всех пользователей данной копии Апача). В случаях, когда у вас нет доступа в файлу настройки Апача (тот же виртуальный хостинг), вам поможет именно этот файл. Этот файл не доступен веб-пользователю из браузера. Если файл .htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех папок, где находится другой файл .htaccess (и кроме всех папок "ниже" этой папки со вторым .htaccess). Пример: Структура ваших директорий на сервере такая: |-user | | | -user1 | | | -user2 | |-data | | | -data1 | | | -data2 | Директории user1 и user2 будут вложенными по отношению к директории user. Если мы поместим в директорию www файл .htaccess, то его действие будет автоматически распространяться и на директории user1 и user2. В директорию data помещаем другой файл .htaccess, по-сравнению, с тем, что находится в директории user. И для директорий data1 и data2 будет действовать файл .htacсess, находящийся в data. Теперь, в директорию user2 мы помещаем еще один файл .htaccess, который отличен от того, что находится в директории 2мя уровнями выше (это директория user). В итоге, настройки для директории user2 будут определяться только тем файлом .htaccess, который находится в этой директории. Так как чаще всего Апач настроен так, что всегда ищет этот файл в директории, то .htaccess поможет вам быстро и без останова сервера произвести его перенастройку. Синтаксис .htaccess Вот обязательной синтаксис, несоблюдение которого приводит к ошибкам сервера: - пути к файлам (директориям) указываются от корня сервера. Пример: /opt/home/[Только зарегистрированные пользователи могут видеть ссылки] - домены с указанием протокола Пример: Redirect / [Только зарегистрированные пользователи могут видеть ссылки] Файл имеет название именно "точка" htaccess Должен быть записан в UNIX-формате. Для оболочки FAR, достигается F4 (редактирование файла), Shift+F2 (выбрать "сохранить как UNIX-текст"). Как запретить веб-посетителям читать файлы в директории? Запрет на все файлы: deny from all Где all обозначает "все". Разрешить доступ с определенного ip: order allow deny deny from all allow from <ваш ip> В данном случае, <ваш ip> обозначает конкретный адрес. Например: order allow deny deny from all allow from 192.126.12.199 Запретить доступ с определенного ip: order allow deny deny from all deny from <ваш ip> Использование <ваш ip> аналогично для примера выше. Запрет на группу файлов по маске: <Files "\.(inc|sql|...другие расширения...)$"> order allow,deny deny from all </Files> Определяет доступ к файлу по его расширению. Например запрет на доступ к файлам с расширениям "inc" для веб-посетителей: <Files "\.(inc)$"> order allow,deny deny from all </Files> В данном примере сам веб-сервер Апач может обращаться к файлам с таким расширениям. Запрет на конкретный файл: Можно поставить запрет на конкретный файл по его названию и расширению. <Files config.inc.php> order allow,deny deny from all </Files> В данном примере стоит запрет на обращения к файлу config.inc.php. Пароль на директорию: AuthName "Private zone" AuthType Basic AuthUserFile /pub/home/твой_логин/.htpasswd require valid-user </Files> Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe. Например в директории, которую защищаем паролем создаем такой .htaccess: AuthName "For Registered Users Only" AuthType Basic AuthUserFile /pub/site.ru/.htpasswd require valid-user </Files> В этом примере, посетитель при запросе директории, будет читать фразу "For Registered Users Only", файл с паролями для доступа должен лежать в директории /pub/site.ru/ и называться .htapasswd . Директория указывается от корня сервера, если вы неправильно зададите директорию, то Апач не сможет прочитать файл .htpasswd и никто не получит доступа к данной директории. Пароль только на 1 файл: Аналогично паролированию директории полностью, можно ставить пароль только на 1 файл. Пример установки пароля на файл private.zip: <Files private.zip> AuthName "Users zone" AuthType Basic AuthUserFile /pub/home/твой_логин/.htpasswd </Files> Пароль на группу файлов: Аналогично, используя <Files "\.(inc|sql|...другие расширения...)$">, можно ставить пароли по маске файлов. Пример установки пароля на доступ ко всем файла с расширением "sql": <Files "\.(sql)$"> AuthName "Users zone" AuthType Basic AuthUserFile /pub/home/твой_логин/.htpasswd </Files> Проверка прав доступа Задача: есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз - при доступе к a1, но при этом соблюдать права на доступ к а2 и а3. Ник и пароль запрашиваются только при входе на а1 - если у юзвера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка "введите пароль". [Только зарегистрированные пользователи могут видеть ссылки] [Только зарегистрированные пользователи могут видеть ссылки]а2 [Только зарегистрированные пользователи могут видеть ссылки] a1 - общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей. файл .htaccess для каталога а1: AuthName "Input password" AuthType Basic AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd" <Files *.*> require valid-user </Files> файл .htaccess для каталога а2: AuthName "Input password" AuthType Basic AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd" <Files *.*> require user юзвер1 юзвер2 юзвер3 </Files *.*> файл .htaccess для каталога а3: AuthName "Input password" AuthType Basic AuthUserFile "/pub/home/абв/htdocs/clousearea/.htpasswd" <Files *.*> require user юзвер1 юзвер4 юзвер5 </Files *.*> Как сделать перенаправление (редирект) посетителя? Редирект на другой url: Что бы сделать перенаправления посетителя на сайт [Только зарегистрированные пользователи могут видеть ссылки] в .htaccess Redirect / [Только зарегистрированные пользователи могут видеть ссылки] Показ разных страниц, в зависимости от IP адреса посетителя: SetEnvIf REMOTE_ADDR <нужный ip адрес> REDIR="redir" RewriteCond %{REDIR} redir RewriteRule ^/$ /another_page.html Например, перенаправление посетителей с ip адресом 192.12.131.1 на страницу about_my_sity.html: SetEnvIf REMOTE_ADDR 192.12.131.1 REDIR="redir" RewriteCond %{REDIR} redir RewriteRule ^/$ /about_my_sity.html Перенаправление посетителя при запросе определенных страниц: Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft: redirect /_vti_bin [Только зарегистрированные пользователи могут видеть ссылки] redirect /scripts [Только зарегистрированные пользователи могут видеть ссылки] redirect /MSADC [Только зарегистрированные пользователи могут видеть ссылки] redirect /c [Только зарегистрированные пользователи могут видеть ссылки] redirect /d [Только зарегистрированные пользователи могут видеть ссылки] redirect /_mem_bin [Только зарегистрированные пользователи могут видеть ссылки] redirect /msadc [Только зарегистрированные пользователи могут видеть ссылки] RedirectMatch (.*)\cmd.exe$ [Только зарегистрированные пользователи могут видеть ссылки]$1 Как сделать стартовой другую страницу? Что бы поменять страницу, которая будет показываться при обращении к директории, пишем: DirectoryIndex <нужная страница> Можно указывать несколько страниц. DirectoryIndex index.shtml index.php index.php3 index.html index.htm Как заставить Апач обрабатывать SSI директивы? SSI позволяют "собирать" страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки. Необходимы обязательные установки в [Только зарегистрированные пользователи могут видеть ссылки] В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes. После, в файле .htaccess пишем: AddHandler server-parsed .shtml .shtm .html .htm Как заставить Апач выполнять в html документах php код? Иногда бывает полезно "обмануть" посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. Некоторые делаю мелкие фишки, вроде того, что дают фалам расширения совпадающие с какими-либо "знаковыми" именами. Например, на сайте [Только зарегистрированные пользователи могут видеть ссылки] используются файлы с расширением osg: index.osg, script.osg и т.п. RemoveHandler .html .htm AddType application/x-[Только зарегистрированные пользователи могут видеть ссылки] .php .htm .html .phtml При большой посещаемости сервера может вызвать тормоза. Спрашивайте у админа. Как самому обрабатывать ошибки Апача? Наиболее интересные и полезные ошибки Апача это: 403-404, 500. 403 - пользователь не прошел аутентификацию, запрет на доступ (Forbided). 404 - запрашиваемый документ (файл, директория) не найден. 500 - внутренняя ошибка сервера (к примеру, ошибка в синтаксисе файла .htaccess). Для того, что бы пользователю при этих ошибках были показаны ваши собственные сообщения об ошибках, в .htaccess пишем: ErrorDocument 403 /errors/403.html ErrorDocument 404 /errors/404.html ErrorDocument 500 /errors/500.html При этом при возникновении 404 ошибки пользователю загрузится файл errors/403.html. Удобно делать собственный обработчик на некоторые ошибки. В .htaccess пишем: ErrorDocument 403 /errors/error.php?403 ErrorDocument 404 /errors/error.php?404 ErrorDocument 500 /errors/error.php?500 В error.php через $[Только зарегистрированные пользователи могут видеть ссылки]['REQUEST_URI'] определяем какой документ вызвал ошибку и дальше обрабатываем. Если в .htaccess на ErrorDocument стоит указание файла с полным путем ([Только зарегистрированные пользователи могут видеть ссылки]), то $[Только зарегистрированные пользователи могут видеть ссылки]['REQUEST_URI'] будет содержать этот файл, а не вызвавший ошибку. В Internet Explorer 5.0 неправильно обрабатывается файл, вызывающийся при ошибке, если его размер меньше 1 килобайта. Будет вызвана стандартная страница IE 404. Как поставить запрет на отображение содержимого директории при отсутствии индексного файла? Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем: Options -Indexes Можно ли указать кодировку на все файлы, в которой по умолчанию получает документы браузер? На заре интернета и зарождения браузеров, часто была ситуация, что браузер не мог автоматически определить, в какой из русских кодировок написан документ и в браузер выдавалась какая-то каша. Для избежания этого указываем, что все отдаваемые страницы будут иметь кодировку windows-1251: AddDefaultCharset windows-1251 Можно ли указать кодировку на загружаемые файлы? При загрузке посетителем файла на сервер, возможна перекодировка его - указываем, что все получаемые файлы будут иметь кодировку windows-1251: CharsetSourceEnc windows-1251 Создал файл .htaccess, но сервер выдает 500 ошибку - Internal Erorr Ошибка синтаксиса или файл записан не в том формате. |
|||
3 пользователя(ей) сказали cпасибо: |
Метки |
htaccess, инструкция, команды, конфигурирование, настроить, писать, пути, сервер, синтаксис, что |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Инструкция] Перенаправление пользователей с домена без www на домен с www через .htaccess | Serberg | Сайтостроение | 8 | 07.10.2013 13:28 |
[Инструкция] Для начинающих снайперов | swat_^^ | Гайды | 1 | 21.07.2010 14:30 |
Скачать Утилита генерации .htaccess и .htpasswd | Serberg | Сайтостроение | 0 | 20.05.2010 11:17 |
[Инструкция] Перенаправление пользователей на другой домен через .htaccess | Serberg | Сайтостроение | 2 | 28.01.2010 00:33 |