Практичні рішення щодо використання файлу .htaccess

Заборони доступу:

Встановлення пароля:

Перенаправлення:

Інше:

Часті помилки:

Для чого служить .htaccess?

Директорії 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/www.astanafoto.com/htdocs/config/.htpasswords - домени із зазначенням протоколу Приклад: Redirect / http://www.site.ru

Файл має назву саме "точка" htaccess Має бути записаний у UNIX-форматі. Для оболонки FAR досягається F4 (редагування файлу), Shift+F2 (вибрати "зберегти як UNIX-текст").

Заборона на всі файли: deny from all Деall означає "все".

Дозволити доступ з певного ip: order allow deny deny from all allow from

Заборонити доступ з певногоip: з'ясувати денний денний від всіх денний від

Використання аналогічно прикладу вище.

Заборона на групу файлів за маскою: ​​ order allow,deny deny from all

Визначає доступ до файлу для його розширення. Наприклад заборона доступу до файлів з розширенням "inc" для веб-відвідувачів: order allow,deny deny from all

У цьому прикладі сам веб-сервер Апач може звертатися до файлів з такими розширеннями.

Заборона на конкретний файл: Можна поставити заборону на конкретний файл за його назвою та розширенням. з'єднання,денний денний з усіх

У цьому прикладі стоїть заборона звернення до файлу config.inc.php.

Пароль на директорію: ​​ AuthName "Private zone" AuthType Basic AuthUserFile /pub/home/твій_логін/.htpasswd require valid-user

Наприклад у директорії, яку захищаємо паролем, створюємо такий .htaccess: AuthName "For Registered Users Only" AuthType Basic AuthUserFile /pub/site.ru/.htpasswd require valid-user

Пароль тільки на 1 файл: Аналогічно паролювання директорії повністю, можна ставити пароль тільки на 1 файл. Приклад встановлення пароля на файл private.zip: AuthName "Users zone" AuthType Basic AuthUserFile /pub/home/твій_логін/.htpasswd

Пароль на групу файлів: Аналогічно, використовуючи , можна ставити паролі по масці файлів. Приклад встановлення пароля на доступ до всіх файлів з розширенням "sql": AuthName "Users zone" AuthType Basic AuthUserFile /pub/home/твій_логін/.htpasswd

Перевірка прав доступу

Завдання: є каталог a1 і в ньому два вкладені каталоги a2, a3, введено 2 рівні користувачів. 1 група має доступ тільки до a1 та a2, 2-адо всіх трьох каталогів. Необхідно проводити аутентифікацію лише 1 раз - при доступі до a1, але при цьому дотримуватися права доступу до а2 і а3. Нік і пароль запитуються тільки при вході на а1 - якщо юзвер має доступ на а2 пароль вже не запитується. Якщо а3 доступу немає, вилетить табличка " введіть пароль " .

www.site.ru/a1 www.site.ru/a1/а2 www.site.ru/a1/a3 a1 - загальний і водночас закритий. а2 і а3 лише окремих осіб.

файл. 4>

файл.

файл.

Як зробити перенапрямок (редирект) відвідувача?

Редирект на інший url: Що б зробити перенаправлення відвідувача на сайт http://site.ru в .htaccess Redirect / http://www.site.ru

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

Як зробити стартовою іншу сторінку?

Щоб поміняти сторінку, яка показуватиметься при зверненні до директорії, пишемо: DirectoryIndex

Можна вказуватикілька сторінок.

DirectoryIndex index.shtml index.php index.php3 index.html index.htm

Як змусити Апач обробляти директиви SSI?

SSI дозволяють "збирати" сторінку зі шматочків. В одному шматочку у вас код меню, в іншому код верхньої частини сторінки, в третьому – нижній. А відвідувач бачить звичайну сторінку, яка складається з коду, який входить у ваші шматочки. Необхідніобов'язкові установки в httpd.conf: У блоці, що починається з і закінчується в рядок Options Indexes, додайте Includes.

Після, у файлі .htaccess пишемо:

AddHandler server-parsed .shtml .shtm .html .htm

Як змусити Апач виконувати у html документах php код?

Іноді буває корисно обдурити відвідувача, видаючи йому свої php-скрипти або інші файли, як html файли. Реально використовується для індексації пошуковою системою Rambler PHP-скриптів. Деякі роблю дрібні фішки, на кшталт того, що дають фалам розширення, що збігаються з якими-небудь "знаковими" іменами. Наприклад, на сайті www.osg.ru використовують файли з розширенням osg: index.osg, script.osg і т.п.

RemoveHandler .html .htm AddType application/x-httpd-php .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 через $HTTP_SERVER_VARS['REQUEST_URI'] визначаємо, який документ викликав помилку і далі обробляємо. Якщо в .htaccess на ErrorDocument стоїть вказівка ​​файлу з повним шляхом (http://site.ru/error.php), $HTTP_SERVER_VARS['REQUEST_URI'] буде містити цей файл, а не викликав помилку. В Internet Explorer 5.0 неправильно обробляється файл, що викликається при помилці, якщо його розмір менше 1 кілобайта. Буде викликано стандартну сторінку IE 404.

Як поставити заборону на відображення вмісту директорії за відсутності індексного файлу?

Чи можна вказати кодування на всі файли, де за замовчуванням отримує документи браузер?

На зорі інтернету та зародження браузерів часто була ситуація, що браузер не міг автоматично визначити, в якому з українських кодувань написаний документ і в браузер видавалася якась каша. Для уникнення цього вказуємо, що всі сторінки, що віддаються, матимуть кодування windows-1251:

Чи можна вказати кодування на файли, що завантажуються?

При завантаженні відвідувачем файлу на сервер, можливе перекодування його - вказуємо, що всі файли, що отримуються, будуть мати кодування windows-1251:

Створив файл .htaccess, але сервер видає 500 помилку - Internal Erorr

Помилка синтаксису або файл записаний не в тому форматі. Дивіться питання #2.

Використані матеріали:http://www.wmaster.ru

Також почитайте:

Коментарі до поста «Практичні рішення щодо використання файлу .htaccess»

Коментарів поки що немає, будьте першим.