Не створюється Використання файлу.htaccess. Правильне змінення сторінок помилок через.htaccess

Файл.htaccess– це спеціалізований службовий документ, який використовується для зміни налаштувань веб-сервера Apache та схожих серверів. Простіше кажучи, його використання допоможе вам змінювати роботу сайту: налаштовувати доступ до папок, файлів та інших матеріалів, вказувати правила перепису посилань та попередження про помилку. Разом з цим, ви не змінюєте функціонування всього сервера, настроюючи лише додаткові параметри у деяких користувачів.

Коли власник сайту працює над своїм проектом, обов'язково настане момент, коли йому доведеться використовувати файл.htaccess. Незважаючи на його величезну важливість, для багатьох вебмайстрів, особливо новачків, він залишається незвіданим, адже щоб розбиратися в ньому, потрібно добре знати не лише SEO, а й програмування.

У цій статті ми допоможемо вам зрозуміти, навіщо потрібний.htaccess і як його налаштувати. Це дуже важливо, тому що він відкриває гнучкі можливості для власників сайтів, які бажають забезпечити надійну безпеку для свого ресурсу.

У цьому файлі сайтобудівники можуть:

  • Налаштовувати директиви простого перенаправлення (редиректи).Це дозволить після зміни домену надіслати відвідувача зі сторінки попереднього сайту на новий проект.
  • Переадресовувати з URL, де є www, на домен без www. Або ж https після того, як встановіть ssl сертифікат.
  • Описувати помилки.У тому числі й помилка 404 із заміною на необхідну сторінку.
  • Кешування файлів.Робиться для прискорення роботи веб-ресурсу.
  • Створювати ЧПК.Це «Людино-зрозумілі УРЛи», тобто формуються посилання, зрозумілі для інтернет-користувачів.
  • Змінювати вихідний код сторінки.
  • Керувати доступом до файлів та директорій за допомогою паролів.
  • Встановлювати індексний файл.
  • Відкривати та закривати доступ із певних IP-адрес.
  • Керувати пошуковими роботами на сайті.
  • Налаштовувати директиви складного спрямування.

Головне призначення.htaccess – налаштовувати сайт та каталоги відповідно до певних вимог. Тобто за допомогою цього файлу SEO-фахівці та програмісти можуть змінювати налаштування веб-сервера, навіть не маючи адміністраторських прав. Але зміни вносяться тільки для певного сайту, і на сервер вони ніяк не впливають.

Конфігурації сервера змінюються лише з використанням директив (команд), що включають «ключ» і «значення» для нього. Усі найважливіші директиви, що дозволяють керувати сервером, знаходяться в основному конфігураційному файлі, що називається httpd.conf. Проблема в тому, що рядовий користувач не має змоги отримати до нього доступ, тому що там знаходиться велика кількість параметрів, від яких залежить працездатність всього сервера. Ось чому актуальний.htaccess, що дозволяє змінювати деякі директиви у головному файлі.

Усі коригування у допоміжному файлі діють весь каталог, у якому він розташований. І якщо завантажити цей документ у кореневу папку сайту, то зміни торкнуться всього ресурсу.

Де знаходиться.

Можна легко перевірити, чи є у вас службовий файл. Від багатьох інших документів він відрізняється тим, що має лише розширення у вигляді назви зі слова, тоді як самої назви немає. Так, ми всі звикли бачити файли з назвою зі слова, та розширенням після точки, яка складається всього з 2-3 літер. Але порожні назви дозволяють робити файли та папки "прихованими", з відкритим вихідним кодом. З цього виходить, що .htaccess для звичайних користувачів залишається невидимим, тому вони не зможуть його змінити.

Але є цей метод «приховування» файлу і зворотний бік медалі. У стандартних FTP-клієнтах на ОС Windows і Mac документ дуже часто залишається невидимим для користувачів, через що вони помилково вважають, що його просто немає. Тому людина створює новий файл для внесення конфігурацій, кодів для обробки помилок, створення доступу до папок тощо. Добре, що більшість залишають місце на диску, де htaccess-файл вже встановлено автоматично.

Але якщо ви не знайдете його, спробуйте зайти в менеджер файлів, який вбудований у ваш хостинг. У ньому можуть відображатися приховані файли та директорії. Шукайте його в public_html, а потім за допомогою встановленого у програмі текстового редактора відкоригуйте та збережіть файл, після чого він завантажиться на сервер самостійно.

Якщо ви не знайдете документ вказаним шляхом, то створіть власний. Може статися, що на екрані з'явиться помилка. Отже, цей хостер заборонив створювати службовий файл.

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

Як правильно створити.htaccess

Для цього вам знадобиться звичайнісінький текстовий редактор, наприклад, Блокнот, який є на будь-якому ПК:

  1. Відкрийте Блокнот, нічого в ньому не пишіть.
  2. Виберіть пункт "Файл"та натисніть "Зберегти як".
  3. З'явиться вікно, де навпроти пункту "Тип файлу"Виберіть « Alltypes»або "Всі файли".
  4. В рядку "Ім'я файлу"введіть . htaccesі клацніть на «Зберегти».

Далі перевірте, чи створено документ правильно. Обов'язково подивіться, чи не зберегли його як.htaccess.txt. Потім завантажте файл у кореневу папку сервера, і якщо не з'явиться помилка 500, значить, ви все зробили правильно.

Відтепер ви можете редагувати файл, що дозволить вам керувати веб-сайтом гнучкіше.

Приклади використання

Розглянемо найпопулярніші команди для .htaccess.

Редирект

Ці директиви використовуються із завидною регулярністю. Вони дозволяють перенаправити відвідувача зі старої URL-адреси на нову сторінку. Це можливо завдяки 301-редиректу. Достатньо в код файлу вписати:

Redirect 301 /старий_URL.html http://www.назва_вашого_сайту.ru/новий_URL.html

Загалом директива буде відображена у такому вигляді:

Redirect URL_LOCAL URL_REDIRECT

URL_LOCAL– це стара адреса, з якої здійснюється перенесення користувача.

URL_REDIRECT– нова URL-адреса, куди переноситься сторінка.

В полі [ status]можуть бути такі значення:

  1. 301 – сторінку перенесено назавжди.
  2. 302 – сторінку перенесено на якийсь час.
  3. 303 - Дивіться іншу сторінку.
  4. 410 - сторінка видалена.

Mod_rewrite (директиви складного перенесення)

Цей модуль міститься в Apache. У ньому є достаток різних директив для розширеного управління адресами. До основних із них належать:

1. Вказівка ​​основного дзеркала

Призначений для того, щоб перетворити домен з www на URL без www. Достатньо запровадити правило:

RewriteEngine On # включає роботу RewriteCond %(HTTP_HOST) ^www.назва_вашого_сайту\ru$ #умови для початку перенаправлення RewriteRule ^(*)$ http://назва_вашого_сайту_/$1 #правило перетворення

2. Перенесення на https

На сьогоднішній день пошуковик Google активно закликає власників сайтів до використання безпечного з'єднання, для чого необхідно перенаправляти користувачів з http на https за допомогою коду:

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URL)

3. Проставлення сліша наприкінці адреси

Якщо ви не бажаєте, щоб URL сторінки закінчувався назвою каталогу http://назва_вашого_сайту.ru/catalog, введіть у файл код:

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

Виконавши цю команду, надалі після адреси в автоматичному режимі додаватиметься: http://назва_вашого_сайту.ru/catalog/

4. Перенесення домену

Змінивши назву сайту, не забудьте в.htaccess вказати:

RewriteEngine on RewriteCond %(HTTP_HOST) ^www\.yoursite.ru\.ru$ RewriteRule ^(.*)$ http://www.your-site.ru/$1

Оптимізуючи сайт і під Яндекс, і під Google, зміна доменного імені може загрожувати неприємними наслідками. Інструкції в robots.txt, призначені для Яндекса, перекриваються 301-редиректом. Але цього можна не допустити, додавши до коду правило:

RewriteEngine on RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) ^mysite\.ru RewriteRule ^(.*)$ http://www.my-site .ru/$1

5. Заборонені команди для пошукового робота

В.htaccess, так само, як і в robots.txt, можна закрити доступ до сайту для пошукових систем:

RewriteEngine on RewriteCond %(USER_AGENT) Googlebot RewriteRule .* - [F] # F – видає помилку 403 – заборонено для сканування

Обробка помилок

Практично будь-який інтернет-користувач зустрічався з помилкою 404 not found (сторінку не знайдено або видалено). Але є безліч інших помилок, про які ви напевно не чули.

У службовому файлі можна прописати файл для його відображення під час помилки. Але попередньо необхідно створити той же файл у html розширенні, і прописати в ньому, у чому полягає ця помилка. Потім, в залежності від помилки, внесіть в кодування.htaccess:

ErrorDocument 404 /siteerror404.html

Індексні документи

Коли відвідувач заходить на сайт, одразу відкривається індексний файл index.xml. Ви можете замінити індексну сторінку на будь-яку іншу, доповнивши код:

DirectoryIndex name.xml

Або додати кілька таких сторінок, і пошуковик буде знаходити їх у відповідній послідовності:

DirectoryIndex index.html index.php index.pl

Вказівка ​​кодування

Ця функція потрібна, щоб текст відображався на екрані користувача правильно. Інакше замість нормальної читабельної сторінки він бачитиме незрозумілі символи. Сьогодні широко поширене кодування: Windows-1251 – Кирилиця таUTF-8 – двобайтове кодування. Для вибору кодування у службовому документі застосовується директива:

AddDefaultCharset WINDOWS-1251

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

CharsetSourceEnc WINDOWS-1251

Вказівка ​​паролів для директорій

Для цього в каталозі, що закривається, пропишіть:

AuthName "Need password" #повідомлення для запиту пароля AuthType Basic #тип автентифікації AuthUserFile /passwords/.psd #ім'я файлу, що містить паролі для входу Require valid-user #ім'я користувачів, яким відкритий доступ

Доступ до файлів та директорій

За допомогою файлу.htaccess можна заборонити повністю або частково доступ до певних файлів. Допустимо, ви хочете закрити доступ до системного каталогу. Тоді у відповідному.htaccess пропишіть:

Deny from all

Для заборони перегляду певного файлу, наприклад test.php:

deny from all

Відкрити перегляд для конкретного IP, і при цьому закрити доступ іншим, дозволяє команда:

Order Deny,Allow Deny from all Allow from 12.345.678.90

Висновок

Як бачите, службовий файл.htacces є одним із найважливіших інструментів для повноцінної працездатності веб-ресурсу. І ознайомившись з його можливостями, ви, напевно, здивувалися, чому раніше знали про цей файл мало. Це ефективний інструмент для того, щоб SEO-фахівці та програмісти могли вносити зміни до конфігурації веб-сервера для певних сайтів, не впливаючи на сервер.

Ми вирішили об'єднати дві теми, "як зробити файл htaccess" і що таке "htaccess", де він розташовується, навіщо потрібні загальні поняття!

Хоча тема htaccess – це не початковий рівень вивчення, але ми потихеньку починаємо заглиблюватись і htaccess – це невід'ємна частина сайту!

Що таке htaccess

На вашому сайті (сервері) є головний файл конфігурації, все, що так чи інакше виконується на вашому сайті залежить від цього файлу, а ось файл htaccess - це можна порівняти з додатковими налаштуваннями системи... Іноді до головного конфігураційного файлу доступу немає і його неможливо змінити, якщо ви не маєте відповідного доступу. В цьому випадку – можна його змінити, лише звернувшись у технічну підтримку!

Визначення що таке htaccess

.htaccess (/"eɪtʃtiːæk.sɛs/ від англ. hypertext access) - файл додаткової конфігурації веб-сервера Apache, а також подібних до нього серверів. Дозволяє задавати велику кількість додаткових параметрів і дозволів для роботи веб-сервера в окремих каталогах (папках), таких як керований доступ до каталогів, перепризначення типів файлів тощо без зміни головного конфігураційного файлу.

Де знаходиться файл htaccess

Ви можете розташовувати цей файл, як в , і цей файл поширюватиме свій вплив на весь сайт, але якщо ви хочете. скасувати дію файлу htaccess в якійсь папці, то просто створюємо новий файл htaccess і вставляємо його в ту папку, в якій хочемо змінити правила.

Найпростіший приклад використання htaccess

Показати найпростіший приклад використання файлу htaccess – щоб далеко не ходити, використовуємо дві версії нашого сайту – 1. нова головна та нова версія всього сайту та 2. стара головна та старі сторінки.

Для обох версій виконуються правила

1. AddHandler fcgid-script .php .html .htm

Цей рядок - SSI (Server Side Includes - включення на стороні сервера) - що дозволяє включити в сторінку інформацію, недоступну засобами HTML, таку як виведення програм наприклад PHP.

А на російській!?

Усі файли, які ви відкриваєте на нашому сайті, мають розширення ".html" - це не віртуальне розширення, а фізичне, тобто. ця інформація зберігається у реальних файлах! Але якщо ви помістите будь-який код php в цей файл, то він виведеться у вигляді простого тексту і не виконається! Для зміни цього і потрібен цей рядок... Якось і про це ми напишемо, коли дійдемо...

2. Можливо верхній приклад досить складний розуміння, чи є варіант простіше!?

Знову звернемося до нашого сайту. Якщо ви звернете увагу, що всі нові сторінки мають спільну папку "page" і всі файли, і як дивно це не звучало, але такої папки - фізично не існує.

Як у кіно – бачиш ложку!? Ні!? – А вона існує!

RewriteRule ^page(.*) index.html [L]

Як зробити файл htaccess

Найпростіше, як можна створити файл htaccess - це заходимо в ту папку. В якій нам потрібно, щоб був файл htaccess – натискаємо ПКМ – створити – текстовий документ.

Ось на нижньому скрині ми бачимо, що наш новий текстовий документ створено. Тепер нам потрібно перейменувати його в.htaccess. Крапка перед словом htaccess – це не помилка – він так і виглядає!


Хм… тільки я хотів його перейменувати, а він мені видає:


Так… у windows 7 це проходило без проблем…

Ну що ж, ми підемо іншим шляхом!

Варіант №2.

Відкриваємо створений файл у блокноті або просто відкриваємо текстовий блокнот і в ньому вказуємо збереження нашого файлу htaccess в потрібну директорію.

Ім'я файлу - .htaccess

Тип файлу – усі файли.


Все – наш файл.htaccess – створено.


Де є файл htaccess?

Він може бути будь-де в залежності від необхідності, але якщо вам потрібно, щоб файл відповідав за всі налаштування сайту, то він повинен знаходиться в тій же директорії, що і файл index.html, ну або index.php.

Htaccess - це файл, який відноситься до налаштування сервера Apache. У ньому можна задати різні налаштування для зручнішого настроювання помилок та інших речей для сайту. Зазвичай файл.htaccess лежить у кореневому каталозі і діє на весь сайт, на всі підкаталоги, якщо ж тільки в іншому каталозі не лежить свій.htacces, тоді він буде діяти на свій каталог і на свої підкаталоги, якщо ж звичайно останні не містять свого.htaccess файлу.

Зазвичай файл.htaccess використовується для обмеження доступу до певних файлів або каталогів.

Чи підтримує ваш хостер.htaccess?

Це, напевно, найскладніше питання, на яке одразу не відповиш! Іноді хостери підтримують.htaccess, тільки своїм користувачам забороняють користуватися цим сервісом. Якщо ж ви на фтп помітили що там є файл.htaccess, тоді не поспішайте його замінювати, і краще зверніться в support (службу підтримки). За звичаєм, якщо на сервері встановлений Unix або Linux, сервер підтримує.htaccess. Я знаю три сайти, які підтримують.htaccess, це:

Як створити файл.htaccess?

Дуже просто. Заходимо в Блокнот (Notepad), пишемо текст, який буде нижче і потім натиснемо на "Зберегти Як" ("Save As)", вибираємо тип файлу "Всі Файли" *.* ("All Files" *.*) і в полі " Ім'я файлу" пишемо.htaccess . Якщо ж ви не можете зробити це, то не засмучуйтесь і збережіть його просто як .htaccess.txt файл, а коли завантажуєте на фтп, використовуючи свій ФТП клієнт, змініть ім'я на .htaccess.

УВАГА: Перед використанням .htaccess я попереджаю вас: навіть якщо використовуючи .htaccess на вашому сервері надзвичайно небажано, т.к. можуть виникнути деякі проблеми (якщо щось неправильно, то він просто не працюватиме), Ви повинні насторожено ставитися до Microsoft FrontPage Extensions. Microsoft FrontPage Extensions використовує .htaccess, так що не раджу вам повністю змінювати його (файл.htaccess) або додавати самому інформацію і замінювати свій.htaccess на.htaccess сервера. Якщо вас дуже закортіло, то пораджу вам спочатку скопіювати файл.htaccess з сервера і вже потім його там змінювати, а то хто знає що ви там зробите з вашими "кривими" ручками:-).

Звичайні сторінки помилок

Насамперед, я розповім вам про те, що можна змінити сторінку помилок. Тобто. сторінки, які видаються при помилці (наприклад, 404 Файл не знайдено) можна налаштувати під дизайн. Я думаю у кожного веб-дизайнера в очах спалахнула думка, про те, що можна під свій дизайн, на своєму тлі з присутністю вашого меню і лого, написати 404 великими червоними літерами, щоб кожен побачив це. Ну ось і приступимо. Система така: ErrorDocument номер помилки /file.html Припустимо ми хочемо змінити 404 помилку, тоді пишемо наступне: ErrorDocument 404 /notfound.html де notfound.html - файл, який лежить в кореневому каталозі і змінений нами! Якщо ж файли з помилками лежать у папці /errorpages, то пишемо у файлі.htaccess ErrorDocument 404 /errorpages/404.html.

Ось список найчастіших помилок:

401 - Authorization Required
400 - Bad request
403 - Forbidden
500 - Internal Server Error
404 - Wrong page або File Not Found

Створюємо файли з усіма цими помилками, і пишемо це файл.htaccess.

У наступній частині я розповім про інші функції файлу.htaccess, щоб покращити свій сайт.

Під час створення сайтів часто потрібно створювати файл.htaccess. Коли я тільки-но почав займатися з сайтобудуванням, то зіткнувся з деякими проблемами, які ускладнювали мені зробити htaccess. Про них я розповім, і про те, як все-таки створити цей файл.

Проблема

Взагалі, .htaccess – це файл додаткової конфігурації Apache. Його особливістю є те, що цей файл має лише розширення, без імені. Це й спричиняє деякі труднощі.

1. Ви хочете створити у себе на комп'ютері під Windows файл htaccess. Конфігурація файлів не показує їхнього розширення. Ви створюєте текстовий файл і називаєте його .htaccess. Вносите туди всю необхідну інформацію, але виявляється, що це не працює. Насправді ви просто створили текстовий файл, а не потрібний.

2. Перший випадок, але тільки у вас з'являються розширення файлів і ви змінюєте "Новий текстовий документ.txt" на ".htaccess". З'являється така помилка.

Як же створити цей файл?

Рішення

1. Ви можете просто завантажити готовий htaccess. Наприклад, для CMS wordpess можна завантажити за посиланням . Якщо у вас система керування контентом інша, можете просто видалити весь вміст файлу і налаштувати під себе. Можна також завантажити порожній htaccess.

134байт Кількість завантажень: 266

2. Створити htaccess можна в файловому менеджеріВи використовуєте для зв'язку з хостингом (сервером), наприклад, WinSCP. New -> File

Для редагування раджу використовувати текстовий редактор. Якщо ви знаєте ще способи, можете доповнити тему .

За підтримки.

andew

2015-02-19T11:30:28+00:00

2017-02-16T05:30:00+00:00

12697

Файл .htaccessє за своїм призначенням файлом конфігураційного рівня каталогу (директорії) для web сервера Apache. Це означає, що директиви з цього файлу виконуються Apache локально лише при зверненні до директорії, що містить файл. Область дії цих директив поширюється лише на каталог, в якому розташований файл, і на вкладені каталоги, доки вони не будуть перевизначені в інших файлах.htaccess з вкладених каталогів. Файл.htaccess перечитується при кожному зверненні до веб-сервера, так що зміни, внесені до цього файлу, набувають чинності негайно.

Таким чином, apache надає нам зручний інструмент конфігурації на рівні директорій сайту. Це розширює наші можливості, оскільки не всі налаштування зручно робити на глобальному рівні та на рівні віртуального хоста. Також на хостингах, власник сайту, як правило, не має можливості виконувати налаштування apache на глобальному рівні та на рівні віртуального хоста, але у нього може бути можливість задати необхідні налаштування на рівні каталогів сайту. Для того щоб apache приймав і виконував директиви з файлів.htaccess каталогів сайту потрібно, щоб на глобальному рівні або на рівні віртуального хоста apache це було дозволено для сайту.

Робиться цей дозвіл за допомогою наступного блоку коду:

AllowOverride All #Інші директиви...

Тут у тезі вказується фізичний шлях на сервері до кореня вашого сайту, і всередині тега вказується директива AllowOverride. Ця директива може бути встановлена ​​в None, щоб сервер не читав файл.htaccess. Якщо вона встановлена ​​в All - сервер допускатиме всі директиви.htaccess файлу. Значення за замовчуванням: AllowOverride All.

Тепер кілька слів про назву файлу.htaccess. Цей файл може називатися і інакше, і це також встановлюється в глобальному конфізі apache директивою AccessFileName. За промовчанням ця директива встановлена ​​в конфізі як AccessFileName .htaccess, і це значення зазвичай ніхто не змінює, але ви повинні знати, що змінити його на інше можливо.

Синтаксис файлів.htaccess у випадку аналогічний синтаксису головного файлу конфігурації apache. Однак адміністратор може обмежувати доступ користувачів до тих чи інших директив. Тобто, незважаючи на те, що команда, в принципі, може виконуватися з .htaccess, адміністратор може заборонити доступ до конкретної директиви. Враховуйте це під час роботи. Також хочу помітити такий момент, коли ви пишите директиви, що працюють з каталогами? то в основних конфігураційних файлах apache їх необхідно обертати в тег із зазначенням каталогу до якого вони застосовні, проте при написанні цих директив в.htaccess файлі вже не потрібно їх повертати в тег , якщо ви хочете що б вони застосовувалися до поточного каталогу файлу. .

Для чого ми можемо використовувати файл.htaccess. Варіантів тут чимало, ось найпоширеніші з них:
1.Для управління дозволами на доступи до каталогів сайту (запаролити директорію, заборонити доступ до файлів певного формату, або доступ до сайту в певний проміжок часу, заборонити або відкрити доступ з певних IP адрес, керувати роботами пошукових систем)
2.Для перезапису поточного URL на новий залежно від умов ()
3.Для явної вказівки кодування сайту.
4.Для дозволу чи заборони перегляду файлів сайту
5.Для захисту від хотлінку
6.Для виконання ридирктів
7.Для завдання своїх сторінок помилок
8.Для перевизначення індексного файлу
9…. і багато іншого.

Давайте для прикладу напишемо якийсь узагальнений файл.htaccess.
До нього ми зберемо найпоширеніші випадки використання директив та додамо до них коментарі. І з цього шаблону шляхом видалення не потрібно ви зможете завжди підготувати конкретний.htaccess для ваших завдань. Тут символ # - це символ коментаря, що застосовується в конфігах apache.

# .htaccess початок шаблону # Встановлення часової зони SetEnv TZ Europe/Moscow # Встановимо примусово кодування сторінок сайту AddDefaultCharset UTF-8 # Задамо index файл який буде # віддаватися якщо запитаний не знайдений Directoryindex index.php index.html # Заборонимо користувачам переглядати файли -Indexes # Дозволимо слідувати за символічними зв'язками в цьому каталозі Options +FollowSymLinks # Дозвіл доступу тільки для вказаних IP Order Deny,Allow Deny з усіх можливих x.x.x.x # Або заборона доступу по IP Order allow,deny deny from x.x.x.x deny from x.x. # Заборонити всім, то тільки # один цей рядок вказати Deny from all # Закрити доступ до вкладеної директорії щодо поточного файлу # можна так, або поклавши туди окремий.htaccess файл Order Deny,Allow Deny from All# Закрити директорію паролем AuthType Basic AuthName "Enter a password" #шлях до файлу з паролями та користувачами AuthUserFile /full/path/to/.htpasswd require valid-user # або закрити вкладену директорію паролем AuthType Basic AuthName "Enter a password" #шлях до файлу з паролями та користувачами () AuthUserFile /full/path/to/.htpasswd require valid-user# Заборона доступу для файлу.htpasswd # для всіх відвідувачів крім дозволених IP Order Deny,Allow Deny from all Allow from x.x.x.x, x.x.x.xx# Блок якщо потрібно вимкнути обробку PHP # можна і для поставити php_value engine off php_value engine off# # Блок змінення налаштувань PHP # деякі директиви залежать від версії PHP #php_flag register_globals off #php_value memory_limit 16M #for uploading files - if needed #php_value 0M #php_value post_max_size 30M #php_flag display_errors off #Налаштування PHP для завантаження великих файлів до 256M php_value memory_limit 256M php_value upload_max_filesize 256M php_value post_max_size 256M # # Перезапис URL RewriteEngine On # встановити кореневий URL як / RewriteBase / #Всі ​​запити з HTTP на HTTPS RewriteCond %(HTTPS) =off RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI) #Тільки для зазначених каталогів всі запити з http на https redirect RewriteCond %(HTTPS) =off RewriteCond %(REQUEST_URI) /(admin|secret)/ RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI) # 301 Редирект як примусова #постановка замикаючого %(REQUEST_URI) /+[^\.]+$ #RewriteRule ^(.+[^/])$ %(REQUEST_URI)/ # # 301 Редирект c www.site.ru на site.ru # як видалення www RewriteCond % (HTTP_HOST) ^www\.site\.ru RewriteRule ^(.*)$ http://site.ru/$1 # #301 Універсальний редирект з домену www. на без www. RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1 #301 Універсальний редирект з домену без www. на www. RewriteCond %(HTTP_HOST) ^(.*)$ RewriteCond %(HTTP_HOST) !^www\. RewriteRule ^(.*)$ http://www.%1/$1 # 301 Редирект із вказаних доменів на основний RewriteCond %(HTTP_HOST) ^www.domen.net$ RewriteCond %(HTTP_HOST) ^domain.net$ RewriteCond %( HTTP_HOST) ^www.domain.net$ RewriteRule ^(.*)$ http://domain.net/$1 # #Редирект із перетворенням GET параметрів RewriteCond %(QUERY_STRING) do=page RewriteCond %(QUERY_STRING) id=(\d+ ) RewriteRule .* /page/%1/? # Внутрішнє перенаправлення на index.php для CMS # Якщо запитані не існуючі файл або директорія # То перенаправляти запит на index.php RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule . /index.php [L] # # або ще варіант внутрішнього перенаправлення на index.php RewriteCond $1 !^(index\.php|images|robots\.txt|public) RewriteCond %(REQUEST_URI) !\.(cssіjsіjpgіgifіpng)$ RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^(.*)$ index.php?/$1 # або як: RewriteRule ^(.*)$ index.php [L] # #Ще варіант , для тих у кого не WordPress і хто хоче позбутися #непотрібних запитів (боти і т.п.) до тем, до адмінки і каталогів WordPress виду #де, що не файл і не директорія, і не починається з /wp-, #то робимо внутрішній redirect на index.php RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d #якщо у вас не WordPress додамо це і також блок після цього RewriteCond %(REQUEST_URI) !^/wp-. /index.php [L] #якщо у вас не WordPress то всім хто ломиться в /wp-... #віддамо 410 Gone status - рекомендація забути цю URL #RewriteRule "oldproduct" "-" #загальний приклад RewriteCond %(REQUEST_URI) ^/wp-RewriteRule. - # Захита від хотлінка RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http://site\.ru/ RewriteCond %(HTTP_REFERER) !^https://site\.ru/ RewriteCond %(HTTP_REFERER) !^http://www\.site\.ru/ RewriteCond %(HTTP_REFERER) !^https://www\.site\.ru/ RewriteRule \.(jpeg|png|bmp|gif|jpg|js|css )$ - [F] # # Ще варіант антихотлінка ресурсів (картинок) RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http://(.+\.)?server\.ru/ RewriteCond %(HTTP_REFERER ) !^https://(.+\.)?server\.ru/ RewriteCond %(REQUEST_URI) !null\.gif$ # Перенаправимо на картинку заглушку dummy.gif RewriteRule \.(jpg|jpeg|gif|bmp| png)$ http://server.ru/dummy.gif [L] # Ще варіант антихотлінка ресурсів (картинок) RewriteCond %(HTTP_REFERER) ! ^$ #Замініть?mysite\.com/ на адресу вашого блогу RewriteCond %(HTTP_REFERER) !^http://(.+\.)?mysite\.com/ RewriteCond %(HTTP_REFERER) !^$ #Замініть /images/ nohotlink.jpg на ваше зображення із забороною хотлінка RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] # Ще варіант антихотлінка ресурсів (картинок) RewriteCond %(HTTP_REFERER) !^ http://(.+\.)?mysite\.com/ RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !google. RewriteCond %(HTTP_REFERER) !yandex. RewriteCond %(HTTP_REFERER) !search?q=cache RewriteCond %(HTTP_REFERER) !msn. RewriteCond %(HTTP_REFERER) !yahoo. RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpe [L] ## Висновок 404 помилки якщо вимкнено mod_rewrite ErrorDocument 404 /index.php# Задамо свої сторінки для помилок ErrorDocument 404 /err_404.html ErrorDocument 403 /err_403.html # # Блок коду редиректу на мобільну версію сайту # Як варіант наводжу тут, більше для прикладу RewriteEngine on # Перевірити рядок UserAgent браузера RewriteCond %(HTTP_USER_AGENT) acs RewriteCond %(HTTP_USER_AGENT) alav RewriteCond %(HTTP_USER_AGENT) alca RewriteCond %(HTTP_USER_AGENT) d %(HTTP_USER_AGENT) aste RewriteCond %(HTTP_USER_AGENT) avan RewriteCond %(HTTP_USER_AGENT) benq RewriteCond %(HTTP_USER_AGENT) bird RewriteCond %(HTTP_USER_AGENT) blac RewriteCond %(HTTP_USER_AGENT) blaz RewriteCond %(HTTP_USER_AGENT) brew RewriteCond _AGENT) cldc RewriteCond %(HTTP_USER_AGENT) cmd- RewriteCond % (HTTP_USER_AGENT) dang RewriteCond %(HTTP_USER_AGENT) doco RewriteCond %(HTTP_USER_AGENT) ерик RewriteCond %(HTTP_USER_AGENT) rewriteCond %(HT ENT) java RewriteCond %(HTTP_USER_AGENT) jigs RewriteCond %(HTTP_USER_AGENT) ) kddi RewriteCond %(HTTP_USER_AGENT) keji RewriteCond %(HTTP_USER_AGENT) leno RewriteCond %(HTTP_USER_AGENT) lg-c RewriteCond %(HTTP_USER_AGENT) lg-d RewriteCond %(HTTP_ lge- RewriteCond %(HTTP_USER_AGENT) maui RewriteCond %(HTTP_USER_AGENT) maxo RewriteCond %(HTTP_USER_AGENT) midp RewriteCond %(HTTP_USER_AGENT) mits RewriteCond %(HTTP_USER_AGENT) mmef RewriteCond %(HTTP_USER_AG riteCond %(HTTP_USER_AGENT) moto RewriteCond %(HTTP_USER_AGENT) mwbp RewriteCond %(HTTP_USER_AGENT) nec- RewriteCond %(HTTP_USER_AGENT) newt RewriteCond %(HTTP_USER_AGENT) noki RewriteCond %(HTTP_USER_AGENT) opwv RewriteCond %(HTTP_USER_AGENT) palm (HTTP_USER_AGENT) pant RewriteCond %(HTTP_USER_AGENT) pdxg RewriteCond %(HTTP_USER_AGENT) phil RewriteCond %(HTTP_USER_AGENT) play RewriteCond %(HTTP_USER_AGENT) pluc RewriteCond %(HTTP_USER_AGENT) port RewriteCond %(HTTP_USER_AGENT) prox RewriteCond %(HTTP_USER_AGENT) AGENT) qwap RewriteCond %(HTTP_USER_AGENT) sage RewriteCond %( HTTP_USER_AGENT) sams RewriteCond %(HTTP_USER_AGENT) sany RewriteCond %(HTTP_USER_AGENT) sec- RewriteCond %(HTTP_USER_AGENT) send RewriteCond %(HTTP_USER_AGENT) ) sgh- RewriteCond %(HTTP_USER_AGENT) shar RewriteCond % (HTTP_USER_AGENT) sie- RewriteCond %(HTTP_USER_AGENT) siem RewriteCond %(HTTP_USER_AGENT) smal RewriteCond %(HTTP_USER_AGENT) sony RewriteCond %(HTTP_USER_AGENT) ENT) symb RewriteCond %(HTTP_USER_AGENT) t-mo RewriteCond %(HTTP_USER_AGENT) teli RewriteCond %(HTTP_USER_AGENT) tim- RewriteCond %(HTTP_USER_AGENT) tosh RewriteCond %(HTTP_USER_AGENT) tsm- RewriteCond %(HTTP_USER_AGENT) teCond %(HTTP_USER_AGENT) vk-v RewriteCond %(HTTP_USER_AGENT ) voda RewriteCond %(HTTP_USER_AGENT) w3cs RewriteCond %(HTTP_USER_AGENT) wap- RewriteCond %(HTTP_USER_AGENT) wapa RewriteCond %(HTTP_USER_AGENT) wapi RewriteCond %(HTTP_USER writeCond %(HTTP_USER_AGENT) webc RewriteCond %(HTTP_USER_AGENT) winw RewriteCond %(HTTP_USER_AGENT) winw RewriteCond %(HTTP_USER_AGENT) xda RewriteCond %(HTTP_USER_AGENT) xda- RewriteCond %(HTTP_USER_AGENT) up.browser RewriteCond %(HTTP_USER) windows.ce RewriteCond %(HTTP_USER_AGENT) iemobile RewriteCond %(HTTP_USER_AGENT) mini RewriteCond %(HTTP_USER_AGENT) mmp RewriteCond %(HTTP_USER_AGENT) symbian RewriteCond %(HTTP_USER_AGENT) midp RewriteCond %(HTTP_USER_AGENT) (HTTP_USER_AGENT) ipad RewriteCond %(HTTP_USER_AGENT) iphone RewriteCond % (HTTP_USER_AGENT) iPad RewriteCond %(HTTP_USER_AGENT) iPhone RewriteCond %(HTTP_USER_AGENT) ipod RewriteCond %(HTTP_USER_AGENT) pocket RewriteCond %(HTP_USER_AGENT) ) android RewriteCond %(HTTP_USER_AGENT) Android RewriteCond %(HTTP_USER_AGENT ) pda RewriteCond %(HTTP_USER_AGENT) PPC RewriteCond %(HTTP_USER_AGENT) Series60 RewriteCond %(HTTP_USER_AGENT) Opera. Mini RewriteCond %(HTTP_USER_AGENT) Moby RewriteCond %(HTTP_USER_AGENT) Mobi # Перевірити службові заголовки, що надсилаються браузером RewriteCond %(HTTP_ACCEPT) "text/vnd.wap.wml" # Перевірити винятки RewriteCond %(HTTP_USER_AGENT) !windows.nt RewriteCond %(HTTP_USER_AGENT) !bsd RewriteCond %(HTTP_USER_AGENT) !x11 RewriteCond %(HTTP_USER_AGENT) !unix (HTTP_USER_AGENT) !macintosh RewriteCond %( HTTP_USER_AGENT) !playstation RewriteCond %(HTTP_USER_AGENT) !google RewriteCond %(HTTP_USER_AGENT) !yandex RewriteCond %(HTTP_USER_AGENT) !bot RewriteCond %(HTTP_USER_AGENT) !libwww d %(HTTP_USER_AGENT) !america RewriteCond %(HTTP_USER_AGENT ) !avant RewriteCond %(HTTP_USER_AGENT) !download RewriteCond %(HTTP_USER_AGENT) !fdm RewriteCond %(HTTP_USER_AGENT) !maui RewriteCond %(HTTP_USER_AGENT) умов переадресація на мобільну версію сайту RewriteRule ^(.*)$ http://mobile.version.of.site.ru#Універсальний 302 редирект на мобільну версію сайту RewriteEngine on #Універсальний редирект на мобільну версію сайту RewriteCond %(HTTP_HOST) ^(.*)$ RewriteCond %(HTTP_USER_AGENT) (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource |pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC| vx | NEC | philips | mmm | xx | panasonic | sharp | wap | sch | rover | sgh|gradi|jb|dddi|moto|iphone|android) RewriteRule ^$ http://m.%1# .htaccess кінець шаблону

Розшифрую деякі прапориз директив:

  • RewriteCond ... - NC означає регістр нечутливе порівняння виконувати
  • RewriteCond ... - NC див. вище, OR - означає об'єднувати RewriteCond через OR, за замовчуванням якщо нічого не вказано, то RewriteCond об'єднуються через AND оператор.
  • RewriteRule ... [L]- L означає закінчити (зупинити обробку) на цьому RewriteRule правилі будь-які подальші перетворення URL, тобто. наступні RewriteRule не виконувати.
  • RewriteRule ... - L див. вище, R=302 означає виконати редирект з кодом 302 на перетворений URL
  • RewriteRule ... - L і R див вище, QSA - при перетворенні URL виконувати при стикування заданих частин, а не заміну.
  • RewriteRule ... [F]- F, значить відмовити у видачі результату з цього URLкодом 403 Forbidden.
  • RewriteRule. - G|Gone - [G] flag означає віддати код 410 Gone status- рекомендація забути цей URL

AuthUserFile - Вказує шлях до файлу з паролями для http авторизації користувача. Шлях може бути абсолютний від кореня файлової системи Linux-сервера або відносний від ServerRoot apache. У Ubuntu ServerRoot "/etc/apache2" за промовчанням. При заданні відносного шляху від ServerRoot apache початковий слєш у дорозі не вказується, інакше шлях сприйматиметься як абсолютний від кореня Linux. Також, якщо шлях містить неприпустимі символи і прогалини його потрібно укладати в лапки, це загальне правило.

Order, Deny, Allow

Тепер ще раз, але вже детальніше, хотілося б повернутися до директив управління доступом: Order, Deny, Allowі детальніше описати її синтаксис та логіку.

Директиви Allow , Deny , Orderмодуля mod_access_compat небажанідо використання і вважаються застарілими, хоч і підтримуються ще у версіях Apache 2.3 і 2.4 . У наступних версіях їх буде видалено. Замість них, починаючи з версії Apache 2.3, цей функціонал реалізується директивою Require, яка дозволяє гнучкіше налаштовувати доступи, ніж застарілі директиви. Деталі дивіться у статті, яка докладно описує директиви Require, Allow, Deny, Orderіз прикладами їх використання.

Директива Order синтаксис: Order або

За замовчуваннямдиректива Order має порядок: Deny,Allow. Зверніть увагу, що Deny,Allowпишуться без пропуску.

Залежно від того, в якому порядку вказані директиви Deny,Allowабо Allow,Denyзмінюється логіка роботи.

Якщо Deny,Allowто забороняється доступ з усіх IP крім зазначених, якщо Allow,Denyдозволяється доступ з усіх ІР крім оговорених. Далі йдуть секції опису для доступу та заборони. Ключове слово allозначає з усіх IP.

Наприклад, щоб заборонити (блокувати) доступ з IP x.x.x.x і x.x.x.xx і дозволити доступ всім іншим необхідно додати в.htaccess наступний код:

#Дозволити ВСІМ крім зазначених IP
Order Allow,Deny
Allow from all
Deny from x.x.x.x x.x.x.xx

Зверніть увагу, що IP записані через пробіл. Можна також вказати IP як IP/маска.

Для зворотної ситуації, що б заборонитидоступ з усіх IP крім x.x.x.x та x.x.x.xx нам необхідно додати в.htaccess наступний код:

# Заборонити ВСІМ крім зазначених IP
Order Deny,Allow
Deny from all
Allow from x.x.x.x x.x.x.xx

Заборону або дозвіл можна вказувати і на окремий файл або групи файлів. Наприклад, щоб заборонити доступ всіх окрім IP x.x.x.x до файлу passwd.html, який розташований у поточній директорії.

# Заборонити файл passwd.html ВСІМ крім зазначених IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

Аналогічно можна заборонити або дозволити доступ до певної групи файлів, описавши їх через регулярне вираження. Наприклад, файли з розширенням ".key":

#Заборонити файли *.key ВСІМ крім зазначених IP

Order Deny,Allow
Deny from all
Allow from x.x.x.x

Шаблон вийшов великий, але на практиці потрібно прагнути використовувати тільки справді украй необхідні директиви. Особливо обережно потрібно надходити із зовнішніми редиректами, оскільки вони призводять до загального збільшення часу обробки запиту. Тому робіть їх тільки якщо вони справді необхідні. Ще хочеться застерегти Вас від прямого копіпаста директив із наведеного мною шаблону до ваших реальних конфіг. Код наведений тут використовуйте тільки для прикладу, щоб отримати уявлення, що взагалі можливо і як це виглядатиме. У свої файли вставляєте тільки ті директиви, синтаксис яких ви розумієте, можете розшифрувати і які ви перевірили за офіційним керівництвом apache. Помилки виконання директив з файлу .htaccessдивіться у логах apache.

Поділіться з друзями або збережіть для себе:

Завантаження...