Посібник для початківців .htaccess для дизайнерів і розробників
Серед багатьох різноманітних інструментів для налаштування вашого веб-сервера, файл налаштувань .htaccess є величезним активом. Ти можеш швидко скинути типи документів, синтаксичний аналіз двигунів, перенаправлення URL-адрес, і багато інших важливих функцій. Веб-майстри, які не дуже технічні, можуть не потрапити в специфіку керування власним файлом .htaccess. Але сама тема є захоплюючою і варто дослідити.
Для цієї статті я хочу представити деякі з більш цілеспрямованих концепцій для веб-майстрів і веб-розробників. Кожен, хто є запуск власного веб-сайту на сервері Apache обов'язково захочемо зрозуміти, як керувати своїм файлом .htaccess. Це надає стільки налаштувань і це може працювати на будь-яких веб-мовах від PHP до Ruby.
У нижній частині цієї публікації я додав деякі зовнішні веб-сторінки допомогти новачкам генерувати свої файли .htaccess динамічно.
Навіщо використовувати файл .htaccess?
Це велике питання і, можливо, нам слід почати з відповіді “Що таке файл .htaccess”? Це дуже спеціальний конфігураційний файл, який використовується веб-сервером Apache. Файл .htaccess може повідомляти веб-сервер як представити різні форми інформації та як обробляти різні заголовки HTTP-запитів.
Дійсно, це засіб децентралізація для організації установок веб-сервера. Один фізичний сервер може містити 50 різних веб-сайтів, кожен з яких має власний файл .htaccess. Це надає велику владу веб-майстрам, що інакше було б неможливим. Але чому ви повинні використовувати один?
Найбільша причина - безпека. Ти можеш блокувати певні каталоги або зробити їх захищеними паролем. Це дуже зручно для приватних проектів або нових систем управління контентом, де ви хочете отримати додаткову безпеку. Але є й загальні завдання, наприклад, перенаправлення 404 повідомлень про помилки на певну веб-сторінку. Це займає лише один рядок коду це може суттєво вплинути на реакцію відвідувачів на відсутні сторінки.
Насправді не можу сказати багато, щоб переконати інших, що файл .htaccess варто розуміти. Після того, як ви побачите його в дії, ви зможете розпізнати всі значення, які надходять від цього маленького конфігураційного файлу. Крім того, я сподіваюся, що решта цієї статті може представити деякі глибокі теми, щоб привести веб-майстрів у світ керування конфігурацією .htaccess.
Дозволити / заборонити доступ
Можна розпізнати потенційних відвідувачів спаму та заборонити їм доступ до вашого веб-сайту. Це може бути трохи екстремальним, однак, якщо ви знаєте, що людина або група людей націлювали ваш сайт, є деякі варіанти вибору. Ви можете вибрати реферал домену, щоб заборонити або заборонити відвідувачам IP-адресу.
замовлення дозволяють, заперечувати відмовити від 255.0.0.0 відмовити від 123.45.6. дозволяють від усіх
Ці зразки кодів були скопійовані з Htaccess Guide, оскільки вони є ідеальним шаблоном для початку роботи. Зверніть увагу, що на 2-му IP-адресі відсутня 4-е число. Цей блок коду буде націлений на перший IP (255.0.0.0) і кожен IP в межах діапазону 123.45.6.0-255, потім дозволити весь інший трафік. Веб-майстри можуть не використовувати це так часто, як інші методи, але це корисно зрозуміти.
Заборона лістингу каталогів
Будуть випадки, коли у вас є відкритий каталог, який є налаштувати, щоб дозволити перегляд за промовчанням. Це означає, що користувачі можуть переглядати всі файли, перелічені у внутрішній структурі каталогів, наприклад папку зображень. Деякі веб-майстри не хочуть дозволяти розміщення каталогів і, на щастя, фрагмент коду досить легко запам'ятати.
Параметри -індекси
Я бачив цю відповідь безліч разів у переповненні Stack, і це може бути одним з найпростіших .htaccess правил, які потрібно запам'ятати.
Можна насправді створити кілька файлів .htaccess всередині кожного з цих каталогів так що, можливо, один з них захищений паролем, а інші - ні. І ви все ще можете зберегти Параметри -індекси щоб відвідувачі не могли переглядати ваш веб-сайт / зображення / папку.
Захист паролем
Захист паролем ваших каталогів є дуже поширеною процедурою захист адміністративних областей та інших папок, важливих для вашого веб-сайту. Іноді ви тільки хочете запропонувати доступ до невеликої групи людей. У інших випадках паролі запобігають доступу хакерів до панелі адміністрування веб-сайту. Але так чи інакше це дуже потужне рішення для цілого ряду проблем.
Є зручний посібник з захисту паролем, який окреслює важливі фрагменти коду. Вам потрібно генерувати файл паролів, який зберігає облікові дані користувача та пароля. Таким чином Apache може перевірити, на що вводиться користувач, щоб побачити, чи повинні вони отримувати доступ. І зверніть увагу, як вам потрібно створити зразок для вашого імені користувача та пароля.
Я б рекомендував використовувати цей генератор htpassword, щоб ви могли заощадити трохи часу. Синтаксис завжди буде ідеальним, і вам не потрібно самостійно шифрувати пароль. І інший відмінний варіант полягає в захисті паролем всього списку каталогів. Цей приклад можна побачити в галереї фрагментів коду CSS-Tricks.
AuthType Basic AuthName "Ця область захищена паролем" AuthUserFile /full/path/to/.htpasswd Вимагає користувача
Безпека для WordPress
Щоб добре використовувати цю ідею захисту паролів, давайте покажемо реальний приклад. Цей складний фрагмент коду буде примусово аутентифікувати користувача для будь-якого доступу до файлу WordPress wp-login.php. Ви знайдете оригінальний джерело на запит Apache, який має безліч інших фрагментів захисту WordPress.
Order Deny, Дозволити відмовитися від всіх Задовольнити будь-яке AuthName "Захищено за допомогою AskApache" AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Require-valid user
І якщо ви збираєтеся дотримуватися цих правил .htaccess, це також може допомогти захистити пароль адміністратора. Зазвичай wp-login.php Файл збирається отримати більшість хітів від людей, які намагаються перебратися в вашу систему. Таким чином, навіть тільки коди зразків вище більш ніж достатньо додаткової безпеки для вашого сайту WordPress.
Правила перезапису URL-адрес HTTP
Переписування URL-адрес, ймовірно, є одним із найпоширеніших способів використання файлів .htaccess. Установки WordPress за замовчуванням можуть фактично генерувати файл .htaccess прямо з панелі адміністрування. Це дозволяє створювати досить URL, які не мають структури .php? P = 1.
Я хочу подивитися на цей приклад перезапису як оновити підкреслення до тире з тих пір містить безліч найважливіших елементів.
(Html | php) $ - [S = 4] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] *) _ ( [^ _] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4- $ 5 [E = uscor: Так] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] ] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4 [E = uscor: Так] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ (. *) $ $ 1- $ 2- $ 3 [E = uscor: Так] RewriteRule ^ ([^ _] *) _ (. *) $ $ 1- $ 2 [E = uscor: Так] RewriteCond% ENV: uscor ^ Так $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
RewriteEngine і RewriteBase найчастіше можна встановити ці точні значення. Але вам потрібно, щоб RewriteEngine увімкнулося, щоб все інше працювало. Є безліч посібників, що пояснюють, як включити mod_rewrite і ваш хостинг-провайдер.
Зверніть увагу, що синтаксис слідує шаблону Правила перезапису на вершині. Ці правила звикли збігаються з випадками, які надсилаються як HTTP-запит. На них відповідає RewriteRule, який у цьому випадку перенаправляє все до домену d.com. Кінцеві дужки, такі як [R = 301, L], називаються важливими прапорами перезапису, але більш розширеною темою.
Синтаксис mod_rewrite, безумовно, трохи заплутаний, але не лякайтеся! У інших прикладах фрагменти можуть виглядати набагато простіше.
Коли я тільки почав, я повинен порекомендувати цей модуль mod_rewrite webapp, який допомагає генерувати зразки коду за допомогою реальних URL-адрес. Це блискучий інструмент, тому що ви можете шукати різні елементи в синтаксисі, щоб побачити, що вони насправді роблять в правилах перезапису. Ось ще один чудовий посібник з більш простим прикладом для вивчення:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
Не намагайтеся перевантажувати себе всім відразу. Мені знадобилося більше 3-4 місяців, щоб почати розуміння того, як переписати URL-адреси з [0-9a-zA] і подібними шаблонами. Продовжуйте практикувати і з часом я обіцяю, що ви отримаєте цей матеріал, як знання загального розуму.
Фрагменти коду для веб-майстрів
Мені дуже подобаються прості у використанні фрагменти, і я хочу зібрати цю невелику колекцію відповідних кодів .htaccess для веб-майстрів. Кожна з цих ідей добре вписується у ваш власний файл .htaccess разом з іншими кодовими блоками. Більшість цих фрагментів дуже зручні вирішення швидких проблем або виправлень у середовищі веб-сервера. Уявіть собі ідеальну настройку Apache для нових веб-майстрів, які тільки починають роботу в Інтернеті.
Налаштування DirectoryIndex
Команда DirectoryIndex використовується зазвичай в одному рядку. Ви можете повідомити Apache, які документи потрібно спочатку розглядати як “main” документ. За замовчуванням це буде цільові елементи, такі як index.html, index.php, index.asp та інші файли індексів. Але використовуючи цей фрагмент коду, який я скопіював нижче, у вас є можливість зробити цей кореневий документ усім, що вам подобається.
DirectoryIndex index.html index.cgi index.php
Порядок документів повинен починатися з найважливішого і просуватися по рядах до найменш важливих. Отже, якщо у нас немає HTML або CGI-файлу, тоді буде використано резервну копію index.php. Ви можете навіть назвати ці файли home.php або someotherfile.php і все це правильний синтаксис.
Примусовий WWW або не-WWW субдомен
Google може працювати з обома версіями домену веб-сайту, якщо ви не вказуєте www.domain.com або просто domain.com. У моєму досвіді це найкраща практика вибрати один з них і встановити його як єдиний вибір через .htaccess. Тоді Google не буде індексувати різні URL-адреси, деякі з яких вказують на субдомен WWW, тоді як інші не.
# Force WWW Піддомен RewriteEngine На RewriteCond% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # Немає субдомена RewriteEngine On RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domain.com/$1 [L, R = 301]
Цей фрагмент коду надходить з архіву CSS-Tricks і надає дуже зручне рішення. Ви повинні оновлювати домен так, як потрібно для власного веб-сайту. Інакше будуть проблеми, і ви відразу ж помітите! Але я дуже підтримую форсування однієї з цих двох опцій, і вона знаходиться на початку мого списку завдань після запуску нового веб-сайту.
Примусово завантажуйте медіафайли
Інший досить важливий фрагмент дозволяє примусити певні типи медіа завантаження замість відображення у браузері. Негайно я можу думати про документи PDF і аудіофайли MP3, які можуть бути представлені у форматі, що завантажується, але як це зробити переконайтеся, що їх можна завантажити? Я знайшов подібну статтю, опубліковану на Htaccess Guide, який викладає цей фрагмент коду.
Додаток AddType / octet-stream .zip .mp3 .mp4
Ви можете включити ще більше типів файлів в кінці цього рядка. Всі формати мультимедіа, що використовують тип MIME октету, будуть завантажуватися. Примусове використання цього методу через .htaccess є дуже прямим шляхом, щоб переконатися, що люди не можуть переглядати ці файли в браузері.
Документи користувацьких помилок
Останній останній фрагмент, який я хочу додати, - це повний шаблон користувацьких помилкових документів. Зазвичай ці кодові числа видно лише на кінці сервера. Але є багато таких помилкових документів, з якими ви повинні бути знайомі. Кілька прикладів Помилки 403/404 і 301 редирект.
Цей шаблон коду помилки починається з 100 і переміщується вгору в 500 помилок. Зверніть увагу, що вам, очевидно, не потрібно все це. Потрібні лише найпоширеніші помилки, і, можливо, кілька неясних фрагментів, якщо ви відчуєте потребу.
Якщо ви не визнаєте код, просто знайдіть його на Вікіпедії, щоб отримати краще розуміння.
ErrorDocument 100 / 100_CONTINUE ErrorDocument 101 / 101_SWITCHING_PROTOCOLS ErrorDocument 102 / 102_PROCESSING ErrorDocument 200 / 200_OK ErrorDocument 201 / 201_CREATED ErrorDocument 202 / 202_ACCEPTED ErrorDocument 203 / 203_NON_AUTHORITATIVE ErrorDocument 204 / 204_NO_CONTENT ErrorDocument 205 / 205_RESET_CONTENT ErrorDocument 206 / 206_PARTIAL_CONTENT ErrorDocument 207 / 207_MULTI_STATUS ErrorDocument 300 / 300_MULTIPLE_CHOICES ErrorDocument 301 / 301_MOVED_PERMANENTLY ErrorDocument 302 / 302_MOVED_TEMPORARILY ErrorDocument 303 / 303_SEE_OTHER ErrorDocument 304 / 304_NOT_MODIFIED ErrorDocument 305 / 305_USE_PROXY ErrorDocument 307 / 307_TEMPORARY_REDIRECT ErrorDocument 400 / 400_BAD_REQUEST ErrorDocument 401 / 401_UNAUTHORIZED ErrorDocument 402 / 402_PAYMENT_REQUIRED ErrorDocument 403 / 403_FORBIDDEN ErrorDocument 404 / 404_NOT_FOUND ErrorDocument 405 / 405_METHOD_NOT_ALLOWED ErrorDocument 406 / 406_NOT_ACCEPTABLE ErrorDocument 407 / 407_PROXY_AUTHENTICATION_REQUIRED ErrorDocument 408 / 408_REQUEST_TIME_OUT ErrorDocument 409 / 409_CONFLICT ErrorDocument 410 / 410_GONE ErrorDocument 411 / 411_LENGTH_REQUIRED ErrorDocument 412 / 412_PRECONDITION_FAILED ErrorDocument 413 / 413_REQUEST_ENTITY_TOO_LARGE ErrorDocument 414 / 414_REQUEST_URI_TOO_LARGE ErrorDocument 415 / 415_UNSUPPORTED_MEDIA_TYPE ErrorDocument 416 / 416_RANGE_NOT_SATISFIABLE ErrorDocument 417 / 417_EXPECTATION_FAILED ErrorDocument 422 / 422_UNPROCESSABLE_ENTITY ErrorDocument 423 / 423_LOCKED ErrorDocument 424 / 424_FAILED_DEPENDENCY ErrorDocument 426 / 426_UPGRADE_REQUIRED ErrorDocument 500 / 500_INTERNAL_SERVER_ERROR ErrorDocument 501 / 501_NOT_IMPLEMENTED ErrorDocument 502 / 502_BAD_GATEWAY ErrorDocument 503 / 503_SERVICE_UNAVAILABLE ErrorDocument 504 / 504_GATEWAY_TIME_OUT ErrorDocument 505 / 505_VERSION_NOT_SUPPORTED ErrorDocument 506 / 506_VARIANT_ALSO_VARIES ErrorDocument 507 / 507_INSUFFICIENT_STORAGE ErrorDocument 510 / 510_NOT_EXTENDED
Інтернет
- Конструктор Htaccess
- .генератор перенаправлення htaccess
- .htaccessEditor - Створити файл .htaccess
- Генератор модулів перепису від GenerateIt.net
Інші корисні ресурси
- .htaccess у Httpd Wiki
- Офіційна документація по Apache htaccess
- Запитай блог Apache - архіви Htaccess
- Ultimate Керівництво по htaccess і mod_rewrite
- Все, що ви хотіли знати про правила Mod_Rewrite, але боялися запитати
Заключні думки
Є багато безлічі ресурсів в Інтернеті, що обговорюють файли .htaccess. Мої пов'язані статті та webapps є прекрасним місцем для початку роботи. Але продовжуйте практикувати нові ідеї і не бійтеся тестування фрагментів коду. Так довго, як у вас є файл резервної копії тоді ви можете перевірити все, що вам подобається, і це веселий досвід навчання.
Якщо у вас є інші ідеї чи пропозиції щодо керування .htaccess, будь ласка, поділіться з нами на наступній темі.