Приклади використання файлу
Ось і настав час поговорити про деякі хитрощі та маніпуляції з файлом htaccess.
1. Першим рядком задаємо основні опції:
Використовувати опції дуже зручно, коли ви не маєте доступу до конфігурування Апача або потрібні різні налаштування Апача для різних сайтів на одному сервері.
2. Небагато SEO (куди ж без нього)
Обов'язково не забути про умову. Не виявися у хостера даного модуля і ваш сайт видаватиме 500-у помилку. Даний конкретний модуль входить до складання Апача за замовчуванням. Ну а раптом… Хостери та їхні адміни бувають усілякі.
У цій частині користі більше для SEO. Модуль rewrite як слід з його назви займається перенаправленнями (привіт Кепу).
У цій частині файлу ми вказали дві склеювання: ми склеїли ваш сайт і www.ваш_сайт Навіть якщо користувач набере ваш сайт без WWW його перекинути 301 редериктом на www.ваш_сайт. А також ми позбулися /index.php у рядку запиту. Якщо користувач набере www.ваш_сайт/index.php, його перекине (знов 301 редериктом) на www.ваш_сайт. Тепер пошукові системи не будуть плутатися між www і не дублюватимуть головну сторінку в результатах індексування вашого сайту. Гуглим СЕО склеювання домену, якщо не розумієте навіщо це потрібно.
3. Хто в папці головний?
Якщо у вас папці є файли index.html і index.php (не знаю, навіщо і кому таке було потрібно, але не раз бачив таке) то як вказати серверу, хто з них більш індексний?
4. Ще налаштування…
Перший рядок встановлює часовий пояс. Наприклад, в Apache 2.22.22 був баг пов'язаний з цією опцією. Функції часу в php не працювали, доки не встановиш часовий пояс.
Вгадайте, що робить третій рядок?
5. Коли немає доступудо php.ini
За допомогою .htaccess ми також можемо керувати рядом налаштувань PHP. На віртуальному хостингу, як правило, немає можливості змінювати налаштування php.ini. Найчастіше цього не потрібно. Але все ж таки є ряд опцій контроль над якими може нам бути корисний. Наприклад, збільшити ліміт завантаження файлів, або ліміт передачі даним методом POST.
Перший рядок дозволить завантажувати файли розміром до 32 мегабайт. За промовчанням у php зазвичай це значення 8 або 16 мегабайт. Другим рядком дозволяємо постінг обсягом до 10 мегабайт. За промовчанням це значення зазвичай 2 Мегабайти. Третій рядок встановлює кодування за вашими скриптами. По суті вона дублює рядок: «AddDefaultCharset UTF-8». Але я частіше вдаюсь до встановлення кодування саме через php. Четвертим рядком змінюємо ліміт часу виділений виконання скрипта. За умовчанням він зазвичай дорівнює 30 секунд. Але іноді для виконання якихось складних обробок потрібно більше часу.
6. Типи файлів. Спритність рук і жодного шахрайства.
У моїй практиці траплялося кілька разів, що після будь-якого оновлення провайдером софту, злітали типи файлів. Хоча таке рідко. За 10 років, лише два випадки. Але іноді мені потрібно було змусити HTML працювати як php. Іноді потрібно навчити апач розрізняти типи файлів, які йому невідомо. (Як виявилося Апач взагалі мало що відомо з рідкісних типів файлів.) У такій ситуації нас врятує наступний код:
Перший рядок дозволить нашим php файлам мати розширення html, але виконуватися як php. Корисно буває у багатьох випадках. А в старі добрі колись пошуковики індексували ЧПУ краще, такий рядок завжди приходив на виручку.
Ми можемо перепризначити, додати або підмінити будь-які типи файлів під зручні для насдозволу.
Цікавий трюк
Другим рядком вказано, які розширення файлів мають виконуватись як cgi скрипти.
Третій, четвертий і п'ятий рядки, про всяк випадок уточнюють мім-тип файлів з роздільною здатністю css, js, xml. Не плутайте із присвоєнням заголовка у відповіді сервера на запит, як це зроблено у перших двох рядках.
Шостий рядок це ділянки, потрібна якщо на вашому сайті є контент, що скачується для користувачів. Якщо додати цей рядок, то при зверненні до даних файлів їм пропонуватиметься завантажити їх на комп'ютер, а не як це зараз у сучасних браузерах купа плагінів, які навіть word відкривають у браузері.
7. Знають дорослі та діти, що архіви менше важать
Корисно, коли ваші сторінки завантажуються швидше. Тому люди й вигадали архівувати файли. А потім вони ще подумали і вирішили, що можна архівувати і сторінки на сайтах і картинки. Причому робити це непомітно для користувача, але суттєво знижувати трафік та прискорювати завантаження сторінок. Чарівні слова пролунали, тепер обговоримо як це можна зробити. Апач має два модулі стиснення. Обидва не є стандартними модулями, тому необов'язково можуть бути у вашого провайдера. Але, як показала практика, у 99% провайдерів один із них коштує. Найбільш поширений mod_deflate. Щоб його за допомогою стискати весь контент на вашому сайті додайте до .htaccess наступні рядки:
Цей модуль може працювати з масками, що безперечно великий плюс. Та й синтаксис у нього куди більш гнучкий ніж у попереднього. Але використовують його рідше. А по стиску я навіть не беруся судити, який із модулів кращий. Я сильної різниці не помітив під час тестів.
8. А ще швидше можна?
Можна, можливо. Якщо застосувати кешування сторінок. У кешування є і плюсимінуси, тому підходити до цього питання треба підготувавшись. Для динамічно оновлюваного сайту кожен 2-3 хвилини, наприклад популярного форуму, потрібно врахувати, що користувач повинен бачити актуальну інформацію. Але у будь-якого сайту є контент, який більш менш статичний. Наприклад, ті ж картинки, або файли стилів. Тому нам потрібно по-різному використовувати кешування різного вмісту на сайті. У html розмітки ми завжди можемо використовувати meta теги. І через php ми можемо встановлювати заголовки відповіді сервера. Залишається питання, як бути з css, js, image тощо. і т.п.
Допомогти нам у цьому можуть два модулі: mod_headers і mod_expires, які можуть встановити заголовки у відповідь сервера і підказати вашому браузеру, що і як потрібно кешувати. Один із модулів зазвичай стоїть у провайдера, але як і у випадку з будь-яким модулем, який не входить до стандартного складання Апача, 100% гарантії ніхто вам не дасть. Тому знову, щоб уникнути 500й помилки, вказує умови для кожного з модулів.
У цій секції я відключив кешування php файлів. Хоча, на мою думку, невеликий часовий інтервал кешування їм не зашкодить. 5-30 секунд, це інтервал часу, протягом якого мало що змінюється. А багато користувачів люблять користуватися клавішею back (повернутись назад). Щоб не завантажувати їм сторінку вдруге, а підхопити її з кеша, розумний інтервал кешування все ж таки доречний.
У другій секції, де йдуть умови для mod_expires, я саме так і роблю — для php ставлю невеликий інтервал кешування.
9. Правила ввічливого тону ...
У процесі модернізації свого сайту, ми часто залишаємо хвости через посилання, які ведуть на сторінки, які ми видалили. Іноді такі посилання йдуть з інших сайтів або пошукових систем. Щоб не втрачати користувачівввічливим тоном вважається мати власні сторінки для різного типу помилок. Включно з помилками сервера. Наприклад стандартне повідомлення про 500й помилки дуже нудне і похмуре, і навряд чи викличе у користувача бажання відвідати вашу сторінку ще раз. Але в htaccess є прийоми, які можуть зробити навіть цю сторінку привітнішою.
Для 400 помилок можна використовувати і динамічні сторінки на php. А ось для 500 краще зробити на html та js. Ця частина помилок зазвичай пов'язана з помилками сервера (у більшості випадків) і php або cgi зазвичай у такій ситуації не працюють.
Якщо вам ліньки робити стільки сторінок встановлюйте сторінкою помилок головну сторінку свого сайту або карту сайту.
Все це ви робите виключно для людей. Пошуковим роботам начхати на те є у вас сторінки помилок чи ні. Вони бачать відповідь сервера з кодом помилки та блокують вашу сторінку у пошук. Тож майте на увазі, це не панацея. Це лише ввічливість до вашої аудиторії та імідж вашого сайту.
10. Підіб'ємо підсумок
Знавці розуміють, що у цій статті описано далеко не всі. Я торкнувся тут лише поверхні айсберга. Насправді можливості .htaccess набагато більші, ніж описано в статті. Але я й не мав на меті перекласти манаул htaccess українською мовою. Усього чого я хотів створити невеликий кістяк файлу .htaccess для тих, хто тільки приступив до вивчення даного питання, щоб заощадити їх час на пошуках інформації по мережі.
Внаслідок усіх маніпуляцій у нас повинен був отримати файл наступного змісту:
11. Післямова.
Я намагався не поспішати у написанні статті і на це пішла майже доба. Але все ж таки десь я міг припуститися помилок в орфографії або пунктуації. Прошу не страчувати, а милувати. А краще писати в личку,щоб я виправив помилки.