Обработка файлов htaccess невозможна: ► Файл htaccess — что это, как работает, нюансы использования и настройки

Содержание

Администратор. Базовый. Системные требования — Стоматология в Химках

Обмен информацией с использованием технологии rss поддерживается модулями

— определить минимальный объем памяти, необходимый для работы ядра продукта
— определить максимальный объем памяти, необходимый для работы ядра продукта
+ установить максимальный объем памяти, доступный при работе системы ядру продукта

Обмен информацией с использованием технологии RSS поддерживается модулями

+ Блоги
+ Форум
+ Информационные блоки

— Почта
— Статистика

Обработка файлов. htaccess невозможна

+ при использовании веб-сервера IIS
— в настройках веб-сервера (httpd. conf) установлена директива AllowOverride All
— PHP установлен как CGI
— PHP установлен как модуль Apache
— при использовании веб-сервера Apache

Если при установке продукта для выбора не доступна база данных Oracle это значит, что

+ в PHP не подключено расширение для работы с данной СУБД: php_oci8
— не настроена поддержка ODBC
— используется дистрибутив продукта, не соответствующий лицензионному ключу

Использование строки php_flag session. use_trans_sid off в файле. htaccess позволяет:

+ отключить подстановку параметра PHPSESSID=. в URL
— отключить сохранение файлов сессии
— указать, что для сохранения файлов сессии будет использоваться директория по умолчанию (т. е. /temp)

Библиотека FreeType необходима для корректной работы

+ механизма CAPTCHA
— диаграмм в модуле опросов
— графиков и диаграмм в модулях Статистики, Рекламы и др.

Если при установке продукта для выбора не доступна база данных MSSQL это значит, что

— установлена версия MSSQL 2000
+ не настроена поддержка ODBC
— устанавливается дистрибутив с поддержкой только MSSQL Express, а установка производится на полную версию СУБД MSSQL

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

+ единым дистрибутивом для всех баз данных
— в различных версиях для разных баз данных
— различаются только дистрибутивы для Oracle XE/MSSQL Express и Oracle/MSSQL

PHP параметр upload_tmp_dir= определяет:

— директорию, в которую будут помещаться экспортируемые из системы файлы
+ директорию, в которую будут помещаться временные файлы, загружаемые в систему
— возможность загрузки документов на сайт

Возможность управления визуальными темами административного интерфейса реализована за счет использования:

— Java Script
— AJAX
+ CSS
— RSS

Параметр memory_limit может быть установлен

+ из скрипта с использованием функции ini_set()
+ непосредственно в файле php. ini
+ в файле. htaccess

— в настройках главного модуля
+ в файле настроек веб-сервера httpd. conf

PHP расширение Zlib compression используется

— для корректной работы механизма CAPTCHA
+ при работе модуля «Компрессия»
+ при работе «Системы обновлений»

— при построении и отображении графиков и диаграмм

При работе с системой в качестве веб-сервера может быть использован

— веб-сервер Apache или IIS
— только веб-сервер Apache
+ любой веб-сервер, который может выполнять PHP приложения

Если при настройке работы с сессиями в PHP не был установлен путь для сохранения файлов сессии, то:

— по умолчанию для сохранения файлов сессии будет использоваться директория /temp
+ по умолчанию для сохранения файлов сессии будет использоваться директория /tmp
— файлы сессии сохраняться не будут

— директорию, в которую будут помещаться экспортируемые из системы файлы директорию, в которую будут помещаться временные файлы, загружаемые в систему — возможность загрузки документов на сайт Возможность управления визуальными темами административного интерфейса реализована за счет использования.

Studizba. com

26.10.2019 4:49:40

2019-10-26 04:49:40

Источники:

Https://studizba. com/testy/1c-bitrix/66-administrator-bazovyy-sistemnye-trebovaniya. html

Администратор КП. Системные требования — СтудИзба » /> » /> .keyword { color: red; }

Обмен информацией с использованием технологии rss поддерживается модулями

— при построении и отображении графиков и диаграмм
+ при работе «Системы обновлений»
+ при работе модуля «Компрессия»

— для корректной работы механизма CAPTCHA

2. PHP параметр upload_tmp_dir= определяет:

+ директорию, в которую будут помещаться временные файлы, загружаемые в систему
— возможность загрузки документов на сайт
— директорию, в которую будут помещаться экспортируемые из системы файлы

3. Если при установке продукта для выбора не доступна база данных MSSQL это значит, что

— установлена версия MSSQL 2000
— устанавливается дистрибутив с поддержкой только MSSQL Express, а установка производится на полную версию СУБД MSSQL

+ не настроена поддержка ODBC

4. При работе с системой в качестве веб-сервера может быть использован

— только веб-сервер Apache
+ любой веб-сервер, который может выполнять PHP приложения
— веб-сервер Apache или IIS

5. Параметр memory_limit может быть установлен

+ из скрипта с использованием функции ini_set()
+ в файле. htaccess

— в настройках главного модуля
+ непосредственно в файле php. ini
+ в файле настроек веб-сервера httpd. conf

6. Возможность управления визуальными темами административного интерфейса реализована за счет использования:

+ CSS
— AJAX
— Java Script
— RSS

7. Продукт поставляется

— различаются только дистрибутивы для Oracle XE/MSSQL Express и Oracle/MSSQL
+ единым дистрибутивом для всех баз данных


— в различных версиях для разных баз данных

8. Использование строки php_flag session. use_trans_sid off в файле. htaccess позволяет:

— отключить сохранение файлов сессии
+ отключить подстановку параметра PHPSESSID=. в URL
— указать, что для сохранения файлов сессии будет использоваться директория по умолчанию (т. е. /temp)

9. Библиотека FreeType необходима для корректной работы

— графиков и диаграмм в модулях Статистики, Рекламы и др.
+ механизма CAPTCHA
— диаграмм в модуле опросов

10. Использование строки ini_set(«memory_limit», «») в файле /bitrix/php_interface/dbconn. php позволяет:

— определить максимальный объем памяти, необходимый для работы ядра продукта
+ установить максимальный объем памяти, доступный при работе системы ядру продукта


— определить минимальный объем памяти, необходимый для работы ядра продукта

11. Если при установке продукта для выбора не доступна база данных Oracle это значит, что

— не настроена поддержка ODBC
+ в PHP не подключено расширение для работы с данной СУБД: php_oci8
— используется дистрибутив продукта, не соответствующий лицензионному ключу

12. Обмен информацией с использованием технологии RSS поддерживается модулями:

— Почта
+ Информационные блоки
+ Форум

— Статистика
+ Блоги

13. Обработка файлов. htaccess невозможна

— PHP установлен как CGI
+ при использовании веб-сервера IIS
— при использовании веб-сервера Apache
— в настройках веб-сервера (httpd. conf) установлена директива AllowOverride All
— PHP установлен как модуль Apache

14. Если при настройке работы с сессиями в PHP не был установлен путь для сохранения файлов сессии, то:

+ по умолчанию для сохранения файлов сессии будет использоваться директория /tmp
— файлы сессии сохраняться не будут
— по умолчанию для сохранения файлов сессии будет использоваться директория /temp

Обработка файлов.

Studizba. com

02.08.2020 15:46:53

2020-08-02 15:46:53

Источники:

Https://studizba. com/testy/1c-bitrix/81-administrator-kp-sistemnye-trebovaniya. html

Параметр memory_limit может быть установлен » /> » /> .keyword { color: red; }

Обмен информацией с использованием технологии rss поддерживается модулями

Сегодняшнюю небольшую заметку мы посвятим мессенджеру Telegram. Мы думаем ни для кого не будет секретом, что данный мессенджер сейчас очень популярен и что в рамках телеграма можно вести каналы, группы по интересам, чаты и конечно же просто общаться.

    17 ноября 2017
    Пример реализации консольного скрипта с подключением ядра 1С-БитриксДавно известно, что ряд операций выносят в отдельные php файлы и запускают из консоли, так как это зачастую удобнее, быстрее, да и в принципе на эти операции не нужен браузер. 24 июля 2017
    MySQL ошибка: InnoDB Error Fetch of persistent statistics requested for tableПри разработке одного проекта, часто стали вылетать ошибки базы или просто бесконечная загрузка страницы. После попыток запустить сайт и перезапуска локального сервера — результат ноль. 19 июля 2017
    Битрикс отправка писем с вложениями без танцев с бубномОтправка писем с аттачем в bitrix довольно распространенная задача, например, отсылать пользователям договора, анкеты, выписки и другие файлы. В интернете довольно много различных способов решения задачи.
    13 июня 2018 в 17:08
    Galinaced FrancisbaxVX : По моему мнению Вы пошли ошибочным путём. 31 мая 2018 в 15:03
    Igorpi IgorpiNP : Номер не пройдет! 31 мая 2018 в 12:58
    Galinaced FrancisbaxVX : Я извиняюсь, но, по-моему, Вы допускаете ошибку. Пишите мне в PM. 31 мая 2018 в 08:32
    Alexeyced AlexeycedYO : Какие слова. фантастика
    29 мая 2017
    Обновление ответов сертификации и сайта Майское обновление сайта. 2 ноября 2015
    Новый дизайн портала BXCert Сегодня мы выпустили новый дизайн нашего проекта. Портал стал выглядеть более современно, как нам кажется. 10 июня 2015
    Новый дизайн и фильтр монитора фриланс бирж Рады сообщить, что мы выпустили новый дизайн раздела монитора проектов с фриланс бирж. Новый дизайн выполнен в минималистичном стиле, все проекты теперь оформлены более компактно.

О проекте

Проект BX Cert — портал web разработчиков. Данный ресурс будет полезен как новичкам в разработке, так и более опытным web разработчикам.

По всем вопросам Вы можете писать на почту:

    Общие вопросы: support@bx-cert. ru По вопросам рекламы: adv@bx-cert. ru

Актуальные вакансии

Мы собираем и храним информацию по всем вакансия web разработчиков и программистов PHP, Python и многих других специалистов.

Компании Ростелеком Информационные Технологии требуется Backend (node. js) разработчик в Кирове
20 сентября 2022

Компании Ситилаб, Научно-методический центр клинической лабораторной диагностики требуется Разработчик Битрикс24 в Москве
20 сентября 2022

Наш твиттер @ BX Cert

© 2013 — 2022 Помощь в сертификации 1С-Битрикс: поможем найти ответы на все вопросы сертификации 1С-Битрикс.
Любое использование материалов, размещенных на BXCert.

ru, без разрешения владельцев BXCert. ru запрещено.
Карта сайта / Поддержать проект / Блог проекта

    13 июня 2018 в 17:08
    Galinaced FrancisbaxVX : По моему мнению Вы пошли ошибочным путём. 31 мая 2018 в 15:03
    Igorpi IgorpiNP : Номер не пройдет! 31 мая 2018 в 12:58
    Galinaced FrancisbaxVX : Я извиняюсь, но, по-моему, Вы допускаете ошибку. Пишите мне в PM. 31 мая 2018 в 08:32
    Alexeyced AlexeycedYO : Какие слова. фантастика
    17 ноября 2017
    Пример реализации консольного скрипта с подключением ядра 1С-БитриксДавно известно, что ряд операций выносят в отдельные php файлы и запускают из консоли, так как это зачастую удобнее, быстрее, да и в принципе на эти операции не нужен браузер. 24 июля 2017
    MySQL ошибка: InnoDB Error Fetch of persistent statistics requested for tableПри разработке одного проекта, часто стали вылетать ошибки базы или просто бесконечная загрузка страницы. После попыток запустить сайт и перезапуска локального сервера — результат ноль.
    19 июля 2017
    Битрикс отправка писем с вложениями без танцев с бубномОтправка писем с аттачем в bitrix довольно распространенная задача, например, отсылать пользователям договора, анкеты, выписки и другие файлы. В интернете довольно много различных способов решения задачи.

17 ноября 2017 Пример реализации консольного скрипта с подключением ядра 1С-БитриксДавно известно, что ряд операций выносят в отдельные php файлы и запускают из консоли, так как это зачастую удобнее, быстрее, да и в принципе на эти операции не нужен браузер.

Bx-cert. ru

30.05.2017 2:44:05

2017-05-30 02:44:05

Источники:

Https://bx-cert. ru/certification/bitrix/7/33/

Оптимальное использование MySQL_Управление веб-сервером Apache с помощью механизма .htaccess_ Резервное копирование баз MySQL_ Основы безопасности для веб-разработчиков

Оптимальное использование MySQL_Управление веб-сервером Apache с помощью механизма .htaccess_ Резервное копирование баз MySQL_ Основы безопасности для веб-разработчиков

Поиск
На сайте
В Яндексе

В подавляющем большинстве случаев для хостинга используется веб-сервер Apache. Это программа, которая осуществляет прием http-запросов, их обработку и выдачу посетителю сервера конечного результата — html-документов, картинок, файлов и так далее. Домашняя страница проекта Apache — http://www.apache.org.

Apache может настраиваться через файл конфигурации, в который администратор помещает инструкции, непосредственно влияющие на функционирование веб-сервера. Обычно в условиях хостинга конечные пользователи не имеют доступа к файлу конфигурации (httpd.conf), так как не всегда это нужно и не все хостинговые компании могут такую возможность предоставить.

Учитывая эти реалии, а также стремясь добавить в Apache возможности более гибкой настройки, авторы этого веб-сервера реализовали допустимость децентрализованного управления конфигурацией с помощью использования специальных файлов, которые помещаются на диске прямо в веб-пространстве виртуального сервера. Эти файлы обычно называются .htaccess (обратите внимание на первый символ в названии файла — точку), но администратор сервера может менять имя таких файлов по своему желанию с помощью директивы AccessFileName в главном файле конфигурации. Действие команд из файла .htaccess распространяется и на подкаталоги того каталога, в котором этот файл размещен. Файл .htaccess перечитывается при каждом обращении к веб-серверу, так что изменения, внесенные в этот файл, вступают в силу немедленно.

Синтаксис файлов .htaccess в общем случае аналогичен синтаксису главного файла конфигурации. Однако, администратор может ограничивать для пользователей доступ к тем или иным директивам. То есть, несмотря на то, что команда, в принципе, может исполняться из .htaccess, администратор может запретить доступ к конкретной директиве. Учитывайте это при работе.

Список всех директив Apache можно посмотреть на сайте apache.org. В описании каждой директивы есть поле Context. Оно указывает на то, откуда может исполняться данная директива. Если в описании нужной команды в поле Context отсутствует упоминание о возможности использования из .htaccess, значит, Вы не сможете применять эту директиву. Теперь перейдем к практике. Сначала нужно создать в каком-то каталоге веб-сервера файл . htaccess, куда в дальнейшем и будут помещаться директивы. Создать файл можно как с помощью FTP-клиента, так и в unix shell (если он у Вас есть). Далее мы рассмотрим наиболее полезные и часто используемые пользователями хостинга директивы, которые могут быть вызваны из .htaccess.

DirectoryIndex — переопределение файла по умолчанию

Обычно принято файл, который открывается веб-сервером при обращении к каталогу, называть именем index.htm или index.html. Иногда возникает необходимость дать такому файлу другое имя. То есть, сделать так, чтобы при обращении к каталогу открывался не index.html, а, например, файл 123.php3 или /cgi-bin/index.pl. Для этого добавим в файл .htaccess такую строку:

DirectoryIndex 123.php3 /cgi-bin/index.pl

При обращении к каталогу Apache попытается найти один из указанных файлов и показать посетителю его содержимое, а если сделать этого не получится, сервер выдаст пользователю список файлов в каталоге.

Options -Indexes — запрет выдачи листинга пустого каталога

Иногда нужно сделать так, чтобы в случае отсутствия в каталоге файла, который показывается по умолчанию, листинг, то есть список файлов в каталоге, не выдавался. В этом случае можно попробовать добавить в .htaccess такую строчку:

Options -Indexes

В этом случае вместо списка файлов в каталоге посетитель получит HTTP ошибку 403 — access forbidden. Это ошибку можно обработать и показать пользователю какую-нибудь красивую страничку вместо неинформативного сообщения от веб-сервера.

ErrorDocument — обработка ошибок

Иногда в работе сервера возникают ошибки. Здесь речь идет не о сбоях в работе программного обеспечения, а об ошибках в терминах интернет-стандарта на протокол HTTP — RFC2616. Вообще, в RFC ошибки называются «Status Codes», но мы их будем называть именно ошибками — так привычнее. Теория такова: клиент присылает на сервер HTTP-запрос, сервер выполняет какие-то операции и возвращает клиенту код возврата и некоторые данные, текстовые или двоичные — вот что происходит каждый раз, когда Вы с помощью своего браузера обращаетесь к любому веб-серверу. Код возврата — это трехзначное число, на основании которого можно судить о том, насколько успешно был обработан запрос. Так, например, коды возврата, начинающиеся с цифр 1, 2 или 3, являются положительными. А вот если веб-сервер вернул Вам код, начинающийся на 4 или 5, то явно произошла какая-то ошибка. Код 4xx выдается в случае возникновения ошибки в процессе обработки запроса, а 5xx означает критическую ошибку или то, что запрос не может быть выполнен вообще.

Вот список ошибок 4xx и 5xx :

400 — Bad Request
401 — Unauthorized
402 — Payment Required
403 — Forbidden
404 — Not Found
405 — Method Not Allowed
406 — Not Acceptable
407 — Proxy Authentication Required
408 — Request Time-out
409 — Conflict
410 — Gone
411 — Length Required
412 — Precondition Failed
413 — Request Entity Too Large
414 — Request-URI Too Large
415 — Unsupported Media Type
500 — Internal Server Error
501 — Not Implemented
502 — Bad Gateway
503 — Service Unavailable
504 — Gateway Time-out
505 — HTTP Version not supported
Детальное описание каждого кода можно найти в RFC2616.

При возникновении ошибки 4xx или 5xx посетитель Вашего сайта увидит в браузере сообщение от сервера, которое вряд ли можно назвать предельно понятным рядовому пользователю. Apache предоставляет возможность выдать вместо аскетичного технического текста, не изобилующего деталями, свою страницу, где Вы можете человеческим языком объяснить пользователю, что произошло и что делать.

Рассмотрим примеры. Допустим, пользователь обратился к документу, которого не существует на сервере. Такое может произойти по разным причинам: где-то осталась ссылка на уже удаленный Вами документ, кто-то дал пользователю неправильную ссылку или пользователь допустил ошибку, когда набирал адрес страницы в браузере. В этом случае сервер выдаст ошибку 404 (Not Found) и текст вида «The requested URL такой-то was not found on this server». Можно выдать вместо этой строчки документ в дизайне Вашего сервера, в котором написать что-то типа «Произошла ошибка — запрошенный документ не найден. Попробуйте уточнить адрес, воспользоваться поисковой системой или начать просмотр сайта с первой страницы». Такое сообщение пользователь поймет гораздо лучше. Более того, пожалуй, выдача дружественных, понятных любому посетителю сообщений является хорошим тоном.

Итак, создаем документ, который будем показывать пользователю в случае возникновения ошибки 404. Назовем файл missing.html, напишем туда все те добрые слова, которыми мы хотим успокоить пользователя, и поместим этот файл в веб-пространство. Допустим, это файл будет доступен как http://Ваш_Сервер/missing.html. В файл .htaccess помещаем такую строчку:

ErrorDocument 404 /missing.html

Все! Теперь при возникновении ошибки 404 пользователь увидит именно Ваш файл. Еще можно скриптом или с помощью SSI вставить в выдаваемый документ какую-нибудь служебную информацию, которую пользователь должен будет привести, если решит обратиться за комментариями к Вам по e-mail.

Таким образом можно обработать практически все негативные коды возврата. Конечно, можно обработать и позитивные коды, но смысл этого не до конца ясен, равно как непонятно в какой ситуации это может пригодиться :). Стоит упомянуть об одной особенности браузера MS Internet Explorer версии 5. Если файл missing.html (так мы его назвали в нашем случае) будет иметь размер менее 1Кб, IE5 покажет пользователю не missing.html, а свое собственное сообщение об ошибке 404. Более подробно об обработке ошибок можно прочитать в документации по Apache на странице «Custom error responses». AddType — переопределение типов данных и кодировок

У многих пользователей интернет, когда они начинают чуть глубже изучать технологии, возникает вопрос типа : «А как браузер узнает, какие документы надо показывать как html, какие как текст и как сделать так, чтобы определенные документы браузер не показывал сразу, а выдавал меню, позволяющее сохранить файл на диск?».

Для этого применяются так называемые MIME types. Каждому типу данных, которые обрабатываются веб-сервером, можно задать определенный тип. Этот тип описывается набором символов, отражающим тип используемых данных. Вот, например, таблица типов нескольких наиболее часто используемых видов данных:

Описание данных Расширение файлов MIME type Картинки gif gif image/gif

Картинки jpeg jpeg jpg jpe image/jpeg
VRML-файлы wrl vrml model/vrml
HTML-документ html htm text/html
Обычный текст asc txt text/plain
Архив ZIP zip application/zip
Файл MS Word doc application/msword
Файл MS Excel xls application/vnd. ms-excel
Файл MS Power Point ppt application/vnd.ms-powerpoint
Файл Adobe Acrobat pdf application/pdf
Flash-документ swf application/x-shockwave-flash

Работает это так: веб-сервер знает, что, например, файлам с расширением .html соответствует тип text/html. В ответ на пришедший запрос html-файла сервер среди прочих http-заголовков возвращает поле Content-type, в котором и указывается тип данных для текущего документа.
Пример:

# telnet host.ru 80
Connected to host.ru.
HEAD /index.html HTTP/1.1
Host: host.ru

HTTP/1.1 200 OK

Date: Wed, 18 Jul 2001 14:51:10 GMT
Last-Modified: Mon, 02 Jul 2001 07:41:37 GMT
Connection: close
Content-Type: text/html

Браузер, получив такой заголовок, знает, что документ с типом данных text/html это не что иное, как обычная веб-страница на языке HTML. Зная это, браузер обрабатывает принятый документ как HTML и показывает его пользователю именно с учетом этого. А вот если бы тип данных был, например, application/zip, браузер понял бы, что это ZIP-архив, который пользователю нужно предложить сохранить на диск.
То есть, браузеры имеют представление о том, каким образом нужно обрабатывать конкретные типы данных. Естественно, набор типов данных, известный браузерам, ограничен. Обусловлено это тем, что со временем появляются все новые и новые приложения для интернета, которые зачастую работают с новыми типами данных, которых раньше просто не существовало. Например, еще лет пять назад не было типа audio/mpeg, которому соответствуют музыкальные файлы в формате mp3. Появился новый тип и в более поздних версиях браузеров он по умолчанию известен. Кстати, добавить новый тип в браузер можно и вручную.

Хорошо, с выдачей типов и обработкой их браузерами мы разобрались. А теперь появился вопрос: как сказать серверу о том, что нужно выдавать такой тип данных, который он в данный момент не знает? Ведь хоть Apache по умолчанию и хранит описания более чем трехсот типов данных, но ведь появляются все новые и новые! Или вот еще задачка: как сделать так, чтобы файлы с расширением . ext показывались в браузерах посетителей как HTML-документы? Для этого и существует директива AddType, которую Вы можете использовать в файлах .htaccess.

Допустим, Вы хотите, чтобы файлам с расширением .ext соответствовал тип данных text/html. Для этого добавим в .htaccess такую строчку:

AddType «text/html» .ext

После того, как это будет сделано, Apache будет работать с той функциональностью, которой мы добивались.

Существует некий набор типов данных, который описывает большинство используемых в интернете форматов. Получить его можно на странице ftp://ftp.isi.edu/in-notes/iana/assignments/media-types.

Еще одна очень важная и востребованная возможность реализуема с использованием AddType. Речь идет о явном указании кодировки для, например, HTML-документов. Допустим, все страницы Вашего сервера выполнены в кодировке windows-1251, все хорошо, все работает. Однако, вдруг понадобилось сделать подраздел сервера например на финском языке. Вы создали у себя на компьютере соответствующие страницы, текст которых написан по-фински, загрузили на сервер в специальный каталог (например, http://www. Ваш_сервер.ru/fin) и, казалось бы, все сделано, но буквы национального алфавита показываются браузером неверно.

В таких случаях нужно явно указывать кодировку, в которой выполнены соответствующие страницы. Без этого браузер не поймет как нужно отображать национальные символы, которые находятся в документе. Более того, если для всего сервера выдается кодировка windows-1251, естественно, финские страницы будут выданы браузеру тоже с кодировкой windows-1251 в заголовке, что приведет к стопроцентно неправильному отображению.

Итак, учимся выдавать нужную кодировку. Как уже говорилось, документы на другом языке лежат у нас в подкаталоге /fin. Заходим в него, создаем там файл .htaccess и добавляем туда строчку:

AddType «text/html; charset=iso-8859-1» .html

В результате для всех файлов с расширением .html в каталоге /fin будет выдаваться такой http-заголовок:

> telnet host.ru 80
Connected to host.ru.
HEAD /fin/test.html HTTP/1.1
Host: host. ru

HTTP/1.1 200 OK

Last-Modified: Wed, 18 Jul 2001 16:29:30 GMT
Connection: close
Content-Type: text/html; charset=iso-8859-1

Кодировку iso-8859-1 в данном случае мы использовали потому что финский язык это именно iso-8859-1. Это общий набор символов для большинства западноевропейских языков. Узнайте какой charset должен выдаваться для нужного Вам языка и воспользуйтесь AddType.

Auth* — защита паролем

Еще можно использовать .htaccess для установки пароля на доступ к определенным страницам или разделам Вашего сайта. Делается это путем создания в нужном подкаталоге файла .htaccess, в который пишем следующее:

AuthType Basic
AuthName «this is a test of protected realm»
AuthUserFile /path/to/file/with/passwords

require valid-user

Кроме того, нужно создать файл с паролями, путь к которому указывается в качестве параметра к директиве AuthUserFile. Пароли в этом файле должны быть шифрованными, чего можно достигнуть с помощью программы htpasswd, входящей в поставку Apache. Если Вы набрали в unix shell команду htpasswd и система сообщила что такого файла нет, выясните у своего хостинг-провайдера где же находится htpasswd. Однако, допустим, htpasswd у нас доступен:

> htpasswd
Usage:

htpasswd [-cmdps] passwordfile username
htpasswd -b[cmdps] passwordfile username password
-c Create a new file.

Здесь мы не будем рассматривать все параметры этой команды, но Вы можете сами прочитать подробности запустив htpasswd в unix shell или ознакомившись с соответствующей страницей документации по Apache. Итак, изначально у нас еще нет файла с паролями и нам нужно его создать:

> htpasswd -c passwords test1
New password:
Re-type new password:
Adding password for user test1
>

После выполнения данной операции htpasswd создаст файл passwords, в котором окажется пользователь test1 и его пароль в зашифрованном виде:

> cat passwords
test1:zgco1KREjBY8M
>

А теперь мы хотим добавить еще одного пользователя. Так как файл с паролями у нас уже есть, мы просто не будем использовать ключ ‘-c’:

> htpasswd passwords test2
New password:
Re-type new password:
Adding password for user test2

> cat passwords
test1:zgco1KREjBY8M
test2:eN3uA6t0kzV1c
>

Сейчас попробуйте обратиться к тому каталогу, в котором мы размещали .htaccess — браузер спросит у Вас пароль, чего мы и добивались. Пока не будет введен правильный логин и пароль, посетитель не увидит соответствующей страницы. В качестве параметра к директиве require мы указали valid-user. Это означает, что любой пользователь, который есть в используемом файле с паролями, может иметь доступ к защищенному ресурсу. Однако, согласитесь, удобно иметь все пароли в одном файле, а права на конкретные ресурсы давать только определенным пользователям. Это тоже реализуемо. Например, мы хотим дать доступ только пользователю test2. Делаем так:

require user test2

Еще можно объединить пользователей в группы и давать доступ не конкретным логинам, а группам. Это можно сделать с помощью директивы

AuthGroupFile:
AuthGroupFile /path/to/file/with/groups

В файле /path/to/file/with/groups создаем группы примерно так:
group1: test1 test5
group2: test2 test4
group3: test1 test3

Соответственно, директиву require будем использовать так:
require group group3

Механизмы ограничения доступа, которые реализованы в Apache, позволяют очень гибко управлять правами для пользователей и групп, что является очень важной возможностью. Если углубиться в изучение предмета, Вы сможете узнать и то, что логины и пароли, используемые для авторизации, можно хранить не только в файлах, но и в простейших базах данных формата BerkeleyDB — почитайте документацию по директиве AuthDBGroupFile. Еще для хранения данных авторизации можно использовать практически любую СУБД (MySQL или PostgreSQL, например), но это уже выходит за рамки данной статьи.

Order, Allow, Deny — запрет доступа для определенных посетителей

Признайтесь, ведь наверняка хоть один раз у Вас было желание запретить кому-то заходить на Ваш веб-сервер? И это тоже можно сделать с помощью . htaccess:

Введение

В процессе предоставления услуг хостинга мы обращаем внимание на наиболее часто встречающиеся ошибки, которые совершают пользователи при разработке своих виртуальных серверов. Одним из «тяжелых» мест для типичного веб-мастера является работа с MySQL-сервером. Обычно изучение принципов функционирования SQL и методов работы с базами данных ведется по литературе, из которой выбираются только актуальные на момент чтения вещи — как соединиться с базой, как сделать запрос, как обновить информацию или добавить новую запись в базу данных и так далее. Такой подход, конечно, дает желаемый результат — интерфейсы веб-сайта пользователя в итоге оказываются интегрированными с базой данных. Однако не всегда пользователи задумываются о том, насколько оптимально работает их база, как можно оптимизировать происходящие при работе с MySQL процессы и каково будет функционирование виртуального сервера при увеличившейся нагрузке, «наплывах» пользователей в результате, например, «раскрутки» сайта. Эта статья поможет Вам оптимизировать работу с СУБД MySQL. Изложенный материал не претендует на детальное описание оптимизации MySQL вообще, а лишь обращает внимание на наиболее часто совершаемые пользователями ошибки и рассказывает о том, как их избежать. Более подробно узнать о тонкостях настройки MySQL можно на специализированных страницах, ссылки на которые приведены в конце этой статьи.

Какие данные нужно хранить в MySQL

Не старайтесь поместить в базы данных всю информацию, которая у Вас есть. Например, не нужно хранить там картинки, хоть MySQL это и позволяет. Помещая в базу данных двоичные образы графических файлов, Вы только замедлите работу своего сервера. Прочитать файл с картинкой с диска гораздо проще и, с точки зрения потребляемых ресурсов, экономичнее, нежели соединиться из скрипта к SQL, сделать запрос, получить образ, обработать его и, выдав нужные http-заголовки, показать посетителю веб-сервера. Во втором случае операция выдачи картинки потребует в несколько раз больше ресурсов процессора, памяти и диска. Также стоит помнить о том, что существуют механизмы кэширования веб-документов, которые позволяют пользователю экономить на трафике, а при динамической генерации контента Вы фактически лишаете своих посетителей этой удобной возможности.

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

Оптимизация запросов

В ситуациях, когда реально требуется получить только определенную порцию данных из MySQL, можно использовать ключ LIMIT для функции SELECT. Это полезно, когда, например, нужно показать результаты поиска чего-либо в базе данных. Допустим, в базе есть список товаров, которые предлагает Ваш интернет-магазин. Выдавать весь список товаров в нужной категории несколько негуманно по отношению к пользователю — каналы связи с интернет не у всех быстрые и выдача лишних ста килобайт информации зачастую заставляет пользователей провести не одну минуту в ожидании результатов загрузки страницы. В таких ситуациях информацию выдают порциями по, допустим, 10 позиций. Неправильно делать выборку из базы всей информации и фильтрацию вывода скриптом. Гораздо оптимальнее будет сделать запрос вида

select good, price from books limit 20,10

В результате, MySQL «отдаст» Вам 10 записей из базы начиная с 20-й позиции. Выдав результат пользователю, сделайте ссылки «Следующие 10 товаров», в качестве параметра передав скрипту следующую позицию, с которой будет делаться вывод списка товаров, и используйте это число при генерации запроса к MySQL.
Также следует помнить, что при составлении запросов к базе данных (SQL queries) следует запрашивать только ту информацию, которая Вам реально нужна. Например, если в базе 10 полей, а в данный момент реально требуется получить только два из них, вместо запроса

select * from table_name

используйте конструкцию вида

select field1, field2 from table_name

Таким образом, Вы не будете нагружать MySQL ненужной работой, занимать лишнюю память и совершать дополнительные дисковые операции. Также следует использовать ключ WHERE там, где нужно получать информацию, попадающую под определенный шаблон. Например, если нужно получить из базы поля с названиями книг, автором которых является Иванов, следует использовать конструкцию вида

select title from books where author=’Иванов’

Также есть ключ LIKE, который позволяет искать поля, значения которых «похожи» на заданный шаблон:

select title from books where author like ‘Иванов%’

В данном случае MySQL выдаст названия книг, значения поля author у которых начинаются с ‘Иванов’.

Ресурсоемкие операции

Вместе с тем следует помнить, что существуют операции, выполнение которых само по себе требует больших ресурсов, чем для обычных запросов. Например, использование операции DISTINCT к функции SELECT вызывает потребление гораздо большего количества процессорного времени, чем обычный SELECT. DISTINCT пытается искать уникальные значения, зачастую производя множество сравнений, подстановок и расчетов. Причем, чем больше становится объем данных, к которому применяется DISTINCT (ведь Ваша база со временем растет), тем медленее будет выполняться такой запрос и рост ресурсов, требуемых для выполнения такой функции, будет происходить не прямо пропорцонально объему хранимых и обрабатываемых данных, а гораздо быстрее.

Индексы

Индексы используют для более быстрого поиска по значению одного из полей. Если индекс не создается, то MySQL осуществляет последовательный просмотр всех полей с самой первой записи до самой последней, осуществляя сопоставление выбранного значения с исходным. Чем больше таблица и чем больше в ней полей, тем дольше осуществляется выборка. Если же у данной таблицы существует индекс для рассматриваемого столбца, то MySQL сможет сделать быстрое позиционирование к физическому расположению данных без необходимости осуществлять полный просмотр таблицы.
Например, если таблица состоит из 1000 строк, то скорость поиска будет как минимум в 100 раз быстрее. Эта скорость будет еще выше, если есть необходимость обратиться сразу ко всем 1000 столбцам, т.к. в этом случае не происходит затрат времени на позиционирование жесткого диска.
В каких ситуациях создание индекса целесообразно:

Быстрый поиск строк при использовании конструкции WHERE
Поиск строк из других таблиц при выполнении объединения
Поиск значения MIN() или MAX() для проиндексированного поля
Сортировка или группировка таблицы в случае, если используется проиндексированное поле
В некоторых случаях полностью теряется необходимость обращаться к файлу данных. Если все используемые поля для некоторой таблицы цифровые и формируют левосторонний индекс для некоторого ключа, то значения могут быть возвращены полностью из индексного дерева с намного большей скоростью.
Если выполняются запросы вида
SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
и существует смешанный индекс для полей col1 и col2, то данные будут возвращены напрямую. Если же созданы отдельные индексы для col1 и для col2, то оптимизатор попробует найти наиболее ограниченный индекс путем определения того, какой из индексов может найти меньше строк, и будет использовать этот индекс для получения данных.
Если у таблицы есть смешанный индекс, то будет использоваться любое левостороннее совпадение с существующим индексом. Например, если есть смешанный индекс 3-х полей (col1, col2, col3), то индексный поиск можно осуществлять по полям (col1), (col1, col2) и (col1, col2, col3).

Как Вы наверняка знаете, для работы с MySQL-сервером необходимо предварительно установить с ним соединение, предъявив логин и пароль. Процесс установки соединения может продолжаться гораздо большее время, нежели непосредственная обработка запроса к базе после установки соединения. Следуя логике, надо избегать лишних соединений к базе, не отсоединяясь от нее там, где это можно сделать, если в дальнейшем планируется продолжить работу с SQL-сервером. Например, если Ваш скрипт установил соединение к базе, сделал выборку данных для анализа, не нужно закрывать соединение к базе, если в процессе работы этого же скрипта Вы планируете результаты анализа поместить в базу.
Также можно поддерживать так называемое persistent (постоянное) соединение к базе, но это возможно в полном объеме при использовании более сложных сред программирования, чем php или perl в обычном CGI-режиме, когда интерпретатор соответствующего языка разово запускается веб-сервером для выполнения пришедшего запроса.

Вы работаете над веб-проектом, в котором используется СУБД MySQL. Конечно, каждый серьезный проект предполагает, что периодически будет создаваться резервная копия всех данных, используемых в работе. Это де-факто стандартный подход. Более того, без этого невозможно гарантировать посетителям сайта бесперебойность работы Вашего ресурса. В случае, если сайт предоставляет коммерческие услуги, наличие резервного копирования является просто-таки жизненной необходимостью.
Вообще, почти все хостинг-провайдеры производят резервное копирование всех файлов пользователей. Однако, не стоит забывать о том, что провайдеры делают backup, в основном, для себя, на случай аварии у себя. Именно по этой причине пользователи в условиях хостинга могут, конечно, рассчитывать на восстановление в случае удаления каких-то данных по вине самого пользователя, но вовсе не факт, что провайдер сделает восстановление MySQL-базы сразу по получению запроса. Лучше делать для себя копию и в случае чего ее использовать. Можно даже периодически копировать этот свой backup на другую, не провайдерскую машину — так надежнее, на всякий случай.

Сделать копию всех статических HTML- и прочих документов просто. Так же несложно периодически «откладывать в сторонку» и копии скриптов. Гораздо более сложной представляется задача создания копии (далее backup) такой динамичной структуры, как база данных MySQL. Основные трудности, которые возникают перед администратором размещенного на хостинге сайта, обычно бывают такие:

Отсутствие физического доступа к файлам базы данных. Как правило, провайдеры хостинга предоставляют возможность работы с базой данных только через скрипты или специальный mysql-клиент, но не дают прав на доступ непосредственно к файлам, в которых содержатся данные из MySQL-базы.
Отсутствие у администратора знаний о том, как вообще надо делать backup. Обычно такая задача возникает только, когда «клюнул жареный петух». То есть, в случае аварии, вторжения хакеров или в других внештатных ситуациях. Веб-мастеры просто не готовы к немедленному backup и начинают судорожно изучать документацию по MySQL, а время идет… В случае, если веб-мастер не владеет в достаточной мере навыками работы со специализированными утилитами из пакета MySQL, могут возникать трудности, связанные с ограничениями, налагаемыми хостинг-провайдером на пользовательские аккаунты. Например, если база очень большая и ее размер превышает лимит на доступную пользователю память (RAM), backup сделать будет сложно. Нужно пользоваться тонкими настройками утилит резервного копирования, что иногда тоже вызывает трудности на практике.
Итак, данная статья предназначена для того, чтобы облегчить работу по созданию резервных копий MySQL-баз. Если Вы — веб-мастер, и работаете с MySQL, наверняка, информация, содержащаяся в данной статье, будет Вам полезна.

Как сделать копию базы MySQL

Существует программа mysqldump, позволяющая быстро и просто производить операции по созданию резервных копий баз MySQL. Также mysqldump дает возможность делать очень тонкие настройки для управления процессом создания резервных копий баз данных или отдельных таблиц. Можно сказать, что mysqldump — это основной инструмент, которым Вам придется пользоваться в том случае, если Вы будете делать backup MySQL. Сразу возьмем простую задачу, которую будем решать с помощью mysqldump, и разберемся, что к чему. Есть хостинг, есть база данных DBNAME, которую выделил Вам хостинг-провайдер. Есть хост HOST, на котором размещен сервер MySQL, логин LOGIN к нему, порт PORT, на котором работает сервер, а также пароль PASS. Имея все эти данные, можно сделать dump (дамп, копию) базы DBNAME так (выполняем в unix shell):

> mysqldump -uLOGIN -PPORT -hHOST -pPASS DBNAME > dump.txt

После выполнения данной команды в файле dump.txt у нас будет копия MySQL-базы DBNAME. Это произойдет только в том случае, конечно, если все параметры Вы зададите верно, в соответствии с настройками своего хостинга. Сразу нужно сказать, что программа mysqldump производит вывод результатов прямо Вам на STDIN, то есть, на экран. Нужно перенаправлять вывод в какой-либо файл. Например, как в данном случае — » > dump.txt «. Если этого не сделать, а база большая, Вы получите на экран все те мегабайты информации, которые в ней содержатся.
Немного расскажем о том, что же делает mysqldump. Эта программа создает сценарий восстановления Ваших данных. То есть, вывод mysqldump — это не какие-то абстрактные и нечитаемые двоичные данные, а осмысленный текст сценария. Например, если в Вашей базе была таблица test, в которой было поле test2 с типом данных integer и одна-единственная запись «1111», то mysqldump создаст примерно такой сценарий:

Часто случается так, что при разработке нового сайта или в процессе поддержки уже готового проекта веб-мастера и программисты все свое время отдают непосредственно творчеству (дизайну, продумыванию и реализации механизмов и алгоритмов), совершенно при этом забывая о такой важной вещи, как безопасность создаваемого проекта. А ведь чем больше труда вложено в сайт, чем больше сил и времени потрачено на его дизайн и программирование, чем больше средств вложено в эти процессы, тем обиднее видеть, как Ваш сайт рушится под атаками хакеров из-за банальной ошибки, допущенной при разработке.
Есть расхожее мнение, что обеспечение безопасности есть дело некоего всезнающего системного администратора, который следит за всем, видит все и в случае чего «примет меры». Однако при этом программист и дизайнер (а зачастую это один человек) забывают о том, что работать их проект будет не в какой-то закрытой офисной сети, где есть только проверенные сотрудники, а в реально публичной всемирной сети Интернет. Доступ к ней, а значит и к Вашему сайту, имеют не только те, для кого предназначается Ваш веб-ресурс, но и нечистые на руку люди, развлекающиеся хакеры подросткового возраста и прочая не всегда желательная публика со всего света.

Подробнее

Как показывает практика, есть некий набор правил, относящихся к обеспечению безопасности, которые нужно соблюдать как при разработке веб-проекта, так и в процессе дальнейшей его эксплуатации. Попробуем рассмотреть наиболее частые ошибки и потенциально уязвимые места:

Установка готовых скриптов производства третьих лиц
Безопасность при программировании
Безопасность при работе с СУБД
«Правильные» пароли и разграничение доступа персонала
Внимательное чтение документации по всему, что Вы используете
Security updates
Резервные копии всего проекта
Установка готовых скриптов производства третьих лиц
Установка готовых скриптов производства третьих лиц

Многие веб-мастера, желая придатьть своему сайту интерактивность, устанавливают у себя различные скрипты — гостевые книги, веб-конференции, формы для отправки почты в адрес администрации сайта, скрипты для проведения опроса мнения посетителей, локальные баннерные системы и прочие готовые скрипты, коллекции которых в изобилии присутствуют в Интернете. Посетив, например, этот сайт, можно найти несколько сотен готовых скриптов на perl или php.

Потенциальная опасность заключается в том, что единожды скачав такой скрипт и установив его на своем сайте, веб-мастер начисто забывает о том, что необходимо следить за выходом новых версий используемого скрипта. Надо знать, что новые версии — это не только новые возможности, которые, может быть, не очень-то Вам и нужны. Выпуск новых версий часто сопровождается исправлением ошибок, допущенных в предыдущих версиях. Может быть, Вас устраивает, как работает тот скрипт, что Вы установили и используете, но в нем могут содержаться ошибки, которые крайне негативно влияют на уровень безопасности Вашего веб-ресурса. Не желая использовать новую версию, веб-мастер тем самым подвергает свой проект опасности. Существуют организованные группы хакеров, основной деятельностью которых является исследование наиболее популярных скриптов на предмет выявления ошибок. Далее эти люди публикуют результаты своей работы в Интернете, и любой, кому по какой-то причине не понравился Ваш сайт, может, если увидит у Вас один из «дырявых» скриптов, использовать описанную где-то уязвимость для атаки на Ваш веб-ресурс.
Вывод — если принято решение использовать кем-то написанный скрипт, возьмите за правило подписываться на список рассылки с уведомлениями о новых версиях используемого продукта и следите не только за тем, какие новые возможности в нем появляются, но и за тем, какие были исправлены ошибки. Если появилось сообщение о найденной уязвимости, немедленно установите новую версию. Обычно авторы оперативно реагируют на обнаружение уязвимостей и сразу выпускают обновленные версии.

Безопасность при программировании

Обычно при создании сайта используют программы на языках Perl или PHP. Такой выбор обуславливается тем, что эти языки имеют множество функций и возможностей, специально предназначенных для разработчиков веб-приложений. И Perl, и PHP имеют в документации статьи, специально предназначенные для тех, кто хочет больше знать о безопасном программировании. Имеет смысл ознакомиться с этими документами и очень серьезно отнестись к рассматриваемым там вещам.
Иногда бывает полезным задействовать в работе веб-проекта систему управления базами данных (СУБД). Появилось довольно большое количество не очень сложных в настройке и использовании СУБД, которые пользуются популярностью у хостинговых компаний и их клиентов. Однако при использовании СУБД также нужно помнить о безопасности. Рассмотрим наиболее типичные security-проблемы веб-разработчиков, которые используют СУБД MySQL. Это наиболее популярная СУБД для хостинга, которой пользуются более половины разработчиков веб-ресурсов. Если у Вас свой собственный MySQL-сервер под Вашим администрированием, нужно серьезно подойти к изучению системы ограничения прав доступа, которая реализована в MySQL. В этой СУБД используются так называемые Access Control Lists (ACLs), позволяющие управлять соединениями, запросами и другими операциями, которые пользователи могут пытаться делать. Очень важным моментом является установка адекватной политики доступа к хранимой в базе данных информации, когда доступ разрешается только к той информации, которая реально нужна. То есть, если у Вас есть два пользователя, которые могут совершать запросы к базе данных и данные, которыми они пользуются, не пересекаются, нужно запретить доступ одного пользователя к данным другого. Если у одного из пользователей каким-то образом будет похищен пароль, злоумышленник получит доступ только к тем данным, которые принадлежат соответствующему пользователю MySQL.

Нельзя никому давать пароль суперпользователя (обычно он называется root)! Не используйте это имя для обращения к базе из скриптов, которые обеспечивают функционирование непосредственно веб-сервера. Да, root по умолчанию имеет доступ ко всем данным и это очень удобно, но это может и погубить всю Вашу работу, если будет украден его пароль или получен доступ под правами root с использованием «дырки» в каком-либо из скриптов. Заведите дополнительного пользователя, наделите его необходимыми правами (как это сделать описано тут) и пользуйтесь этим аккаунтом для обращения к базе там, где реально не требуются права суперпользователя.

Не храните в базе пароли в виде открытого текста. В MySQL есть специальная функция, которая позволяет создавать шифрованные с помощью алгоритма md5 пароли. Для того, чтобы получить шифрованный пароль, можно воспользоваться такой командой в интерактивном режиме работы с MySQL:

update mysql. user set Password=password(‘your_pass’) where user=’web’;
В данном случае ‘your_pass’ является паролем, который будет зашифрован, а ‘web’ — имя пользователя, которому будет установлен такой пароль.

Дополнительные рекомендации по генерации паролей можно прочитать в соответствующем разделе этой статьи.

Никогда не доверяйте данным, которые вводят пользователи на веб-сервере. Проверяйте строки, которые Ваши скрипты получают из веб-форм. Например, в форме есть поле, в которое нужно ввести количество заказываемого в Вашем интернет-магазине товара. Вы предполагаете, что пользователь введет туда число. А на самом деле туда может быть введено не «5», что-то типа «5; drop database mysql». Конечно, это уж слишком трагичный пример, но и его вполне можно использовать, если Ваш скрипт производит соединение к базе под пользователем root. Менее «опасный» пример — select * from passwords — если у Вас есть, допустим, такая табличка с паролями. Проверяйте все данные, которые приходят с веба. Помещать в MySQL непроверенные данные очень опасно.

Иногда очень полезным (особенно для начинающих пользователей и разработчиков) является сделать веб-интерфейс для администрирования MySQL. Если Вы воспользовались утилитами типа phpMyAdmin, не забудьте запаролировать доступ к такому интерфейсу. Будет очень неприятно, если такой веб-интерфейс найдут хакеры и просто сделают drop database, а таких случаев было очень много. Это, кстати, является одной из наиболее частых ошибок пользователей при работе с MySQL — Обратите особое внимание. Вообще, делая какой-то административный интерфейс, не надейтесь, что никто не найдет URL вида http://www.domain.ru/myadminweb. Найдут. Лучше поставьте на доступ к такому интерфейсу пароль. Это вполне можно сделать средствами веб-сервера apache.
Стоит также понимать, что изложенные тезисы применимы не только к MySQL, но и к любой другой СУБД. Отличия могут быть в синтаксисе команд и деталях.

«Правильные» пароли и разграничение доступа персонала

Не придумывайте слишком простых паролей. Не делайте паролей, состоящих из простых слов. Существуют огромные словари, которые могут быть использованы хакером при подборе украденного шифрованного пароля или при подборе пароля в online-режиме. Например, пароль ‘application’ гораздо менее устойчив к перебору, чем, скажем, пароль ‘hjsdg123’. Стоит делать действительно сложные пароли. Например, ‘J3g45HrrT’, ‘Kfgd45h445’ или ‘K4j5uff34’. Чем более сложным кажется такой пароль, тем лучше.
Если на Вашем сайте предусмотрен административный интерфейс для сотрудников компании или просто команды администраторов сайта, обратите внимание на разграничение прав доступа к информации. Делайте доступной для конкретного пользователя только ту информацию, с которой он реально должен работать. Если, например, человек отвечает за раздел «Книги» Вашего интернет-магазина, не стоит без веских на то причин давать ему управлять и разделом «Видеокассеты».
Это называется принципом минимальных прав, когда рядовым сотрудникам выдаются только те права, которые им реально необходимы. Да, конечно, есть администраторы, которые получают большие или даже все возможные права, но для рядовых сотрудников этого делать не стоит. Если Вы будете придерживаться принципа минимальных прав, при краже пароля пользователя ущерб, который может быть нанесен, ограничится данными только одного раздела, а к другим частям административного интерфейса Вашего проекта доступ злоумышленник получить не сможет.

Внимательное чтение документации по всему, что Вы используете

Если Вы решили установить у себя какой-то программный продукт, воспользоваться тем или иным языком программирования, реализовать применение той или иной технологии, возьмите за правило читать документацию в как можно более полном объеме. Не нужно пользоваться полноценной документацией только как справочником. Иногда «между строк» в самых неожиданных местах описаний и инструкций даются очень полезные советы по безопасности.

Следить за security updates

Современный хостинг является довольно сложной технологией, состоящей из десятков или даже сотен программных продуктов, которые обмениваются друг с другом данными, работают в одном адресном пространстве, и следить за тем, чтобы все версии программ регулярно обновлялись, не содержали security ошибок и «дырок», должны специалисты хостинг-провайдера. Как правило, провайдеры успевают обновлять используемое ПО, так что Вам остается следить за своими программами.
Существуют списки рассылки, посвященные безопасности, на которые имеет смысл подписаться. Также следует периодически посещать сайты соответствующей тематики и просматривать там анонсы найденных уязвимостей. Да, зачастую то, что Вы увидите, не будет Вам полезно. Однако замеченное однажды скромное сообщение о «дырке» в используемой Вами, например, веб-конференции позволит сохранить много нервов.

Если уж кто-то воспользовался «дыркой» на Вашем сайте и, например, удалил все его содержимое, будет очень просто восстановить работоспособность всего проекта в считанные минуты, если Вы периодически создавали резервные копии. Делайте архивы всего контента виртуального сервера и скачивайте их на свой компьютер. Если хостинг-провайдер предлагает возможность централизованного создания backup-копий сайта, обязательно пользуйтесь этой возможностью.

Сами Вы можете создавать архив проекта примерно таким методом:

Допустим, есть каталог /home/user, содержащий следующие файлы:

host# ls -la
-rw-r—r— 103941 11 May 15:46 calc. csv
-rw-r—r— 274 21 May 10:02 index.html
-rw-r—r— 1865 12 May 17:18 index2.wml

Требуется создать архив, содержащий все эти файлы и имеющий уникальное имя, отражающее время и дату его создания. Выполним такую команду:

host# tar -zcf `date «+%Y-%m-%d-%H:%M:%S»`.tgz /home/user/

Итог :

host# ls -la
-rw-r—r— 55933 30 May 13:19 2001-05-30-13-19-45.tgz
-rw-r—r— 103941 11 May 15:46 calc.csv
-rw-r—r— 274 21 May 10:02 index.html
-rw-r—r— 1865 12 May 17:18 index2.wml

То есть, появился файл 2001-05-30-13-19-45.tgz, который содержит сжатые архиваторами tar/gzip файлы из каталога /home/user. Как поступить дальше с архивом — решайте. Можно скачать его на свой компьютер и хранить локально.

Если есть желание сделать действительно серьезную систему хранения всех копий всех версий файлов, воспользуйтесь CVS. После установки и настройки CVS на локальном сервере для разработчиков Вы сможете настроить автоматическую публикацию обновленных файлов на веб-сервер через scp, например, если Ваш хостинг-провайдер предоставляет такую возможность. Так обновляется в том числе и этот сайт 🙂

Заключение

Автор данной статьи не пытается дать советы на все случаи жизни или раскрыть все темы, актуальные при работах по обеспечению безопасности. Здесь описываются лишь наиболее частые ошибки современных веб-мастеров и даются советы как улучшить то, с чем Вы каждый день сталкиваетесь. Также даны ссылки для самостоятельного изучения. Тема безопасности гораздо шире, чем кажется на первый взгляд. Интересоваться соответствующими вопросами нужно постоянно, а не останавливаться на прочтении этой страницы. Только так можно быть в курсе наиболее актуальных вопросов обеспечения security при разработке своего проекта.

  Яндекс.Новости


Режимы работы PHP на VPS

Помощь 0 Регистрация Вход

  • Домены
  • Хостинг
  • Сайты
  • Личный кабинет
  • VPS и серверы
    • Заказ и управление VPS
    • Работа с сервером
    • Установка программного обеспечения
  • SSL-сертификаты
  • Общие вопросы
  • Как работает mod_php
  • Как работает PHP CGI и FastCGI
  • Как работает PHP FPM

PHP — это скриптовый язык программирования. Он используется для создания сайтов и поддерживается на большинстве серверов. PHP может взаимодействовать с веб-сервером в разных режимах:

  • mod_php — дополнительный модуль Apache, который работает как часть веб-сервера;
  • Fast CGI — может взаимодействовать с Nginx или Apache. Также работает со связкой Nginx+Apache;
  • PHP FPM — альтернатива FastCGI, которая может взаимодействовать с Nginx.

О принципах работы каждого из режимов расскажем ниже. 

Как работает mod_php

mod_php — это модуль Apache. Он обрабатывает все PHP-скрипты самостоятельно, не прибегая к другим модулям. Благодаря этому запросы выполняются быстрее. Также mod_php позволяет вводить переменные PHP в файле .htaccess. Этот модуль подходит для сайтов, на которых нужно обрабатывать преимущественно динамические данные.

mod_php имеет следующие недостатки:

  • всем пользователям нужно выдавать права веб-сервера: без прав невозможно внести изменения на сервере;
  • низкий уровень безопасности: невозможно определить пользователя, который запустил какой-либо процесс, так как все процессы выполняются под именем apache;
  • медленно обрабатываются статические данные;
  • ошибки в скриптах могут помешать работе всего сервера.

Как работает PHP CGI и FastCGI

CGI — это стандарт, который определяет, как веб-сервер должен взаимодействовать со скриптами. Используется редко, так как считается устаревшим.

FastCGI — это стандарт, который создан на базе CGI. Он определяет, как веб-сервер должен взаимодействовать со скриптом.

Принципы работы FastCGI:

  • скрипт загружается в память один раз, а затем он попадает в цикл обработки запросов от HTTP-сервера;
  • процесс-скрипт обрабатывает запросы по одному, в порядке очереди.

FastCGI одинаково работает со статическими и динамическими данными. Также он имеет следующие преимущества:

  • каждый скрипт запускается от имени отдельного пользователя. Если запустить небезопасный PHP-скрипт, он не повлияет на файлы других пользователей сервера;
  • пользователь имеет все права на выполнение скриптов в пределах своего WWW-домена;
  • каждый пользователь сервера может выбирать версию PHP;
  • сервер не останавливается, если в скрипте есть ошибка;
  • можно вносить переменные в файл . htaccess.

FastCGI имеет два недостатка:

  • меньшая производительность (если сравнивать с mod_php),
  • медленная обработка статических данных (если нет связки с Nginx).

Как работает PHP FPM

FPM создан как альтернативная версия FastCGI. Это единственный модуль, который подходит для чистого Nginx.

Основные преимущества FPM:

  • нет необходимости в веб-сервере Apache,
  • низкое потребление оперативной памяти,
  • быстрая обработка статических данных благодаря совместимости с Nginx.

Единственный недостаток PHP FPM — это отсутствие поддержки файла .htaccess. Из-за этого нужно настраивать правила на стороне Nginx.

Популярные статьи

  • Как указать (изменить) DNS-серверы для домена
  • Я зарегистрировал домен, что дальше
  • Как добавить запись типа A, AAAA, CNAME, MX, TXT, SRV для своего домена
  • Что такое редирект: виды и возможности настройки
  • Как создать почту со своим доменом

Домены

  • Регистрация доменов
  • Освободившиеся домены
  • Промоакции
  • Перенос домена
  • Переадресация
  • Магазин доменов

Сайты

  • Конструктор сайтов
  • Сайты на WordPress

Хостинг сайтов

  • Хостинг
  • Windows хостинг

VPS и серверы

  • VPS хостинг
  • Windows VPS
  • Аренда серверов

Дополнения

  • SSL-сертификаты
  • //=url(‘/free-mail’)?>

Сервисы

  • Бесплатный хостинг
  • Whois
  • Связь с администратором домена
  • Определить свой IP-адрес
  • Проверка порта на доступность
  • Узнать местоположение по IP
  • Проверить доступность сайта

Поддержка

  • Справка
  • Стоимость услуг
  • Способы оплаты
  • Связаться с нами

Компания

  • О компании
  • Документы
  • Офис
  • Дата-центр
  • Новости
  • Блог
  • Акции и скидки

© 2DOMAINS — регистрация доменов

  • Домены оптом
  • Географические домены
  • Кириллические домены
  • Административные домены
  • Национальные домены
  • Новые домены первого уровня
  • Где купить домен дешево
  • Дешевый хостинг
  • CloudVPS
  • Хостинг для сайта-визитки
  • Хостинг с PHP и MySQL
  • Надежный хостинг
  • Самые дешевые домены
  • Хостинг WordPress
  • Хостинг для 1С-Битрикс
  • Хостинг для Drupal
  • Хостинг для Joomla
  • Хостинг для MODX
  • Хостинг для OpenCart
  • Антивирус для хостинга
  • Бэкап сайта
  • Защита от DDoS-атак
  • Хостинг с ISPmanager
  • SSL бесплатно
  • AlphaSSL
  • AlphaSSL WildCard
  • ExtendedSSL
  • GlobalSign-сертификаты
  • Comodo / Sectigo — сертификаты
  • GeoTrust-сертификаты
  • Symantec-сертификаты
  • Thawte-сертификаты
  • TrustWave-сертификаты
  • Wildcard-сертификаты

Политика обработки персональных данных
Тех. поддержка: [email protected]

Указанные на сайте цены могут не включать стоимость применимых комиссий.

При заказе услуги стоимость может быть уточнена исполнителем.

Что такое веб-сервер Apache и как им пользоваться 🍂

12 апреля 2021

Хостинг

23 637

Время чтения ≈ 11 минут

Интернет невозможно представить без всевозможных сайтов. Все они работают за счёт веб-серверов – программ, отвечающих за передачу данных от физических хранилищ до браузеров пользователей.

Веб-сервер работает в качестве «посредника» между пользователем и физическим сервером. При получении запроса от посетителя он ищет необходимую страницу в каталоге с сайтом и отправляет её в ответ. Браузер принимает полученный файл, обрабатывает его и отображает на экране посетителя.

Передача информации веб-сервера выполняется по протоколу HTTP (HyperText Transfer Protocol), изначально созданного для работы с HTML-страницами. Уже позже стало возможным отправлять через HTTP файлы любых типов. В последнее время преобладают сайты, работающие через HTTPS. Это улучшенная версия HTTP, которая отличается от предшественника тем, что поддерживает шифрование трафика TLS/SSL между пользователем и сервером.

Звание самого популярного веб-сервера в мире уже более 25 лет удерживает за собой Apache HTTP Server, который принято называть сокращенно Apache или «Апач». Сегодня программа обслуживает более 40% всех существующих серверов, включая проекты IBM, eBay, PayPal и Facebook.

Рассмотрим причины популярности Apache подробнее. Это не только пополнит копилку знаний об интернет-технологиях, но и поможет сделать правильный выбор веб-сервера для размещения сайта в будущем.

Что это такое

Apache – это свободное программное обеспечение для размещения веб-сервера. Он хорошо показывает себя в работе с масштабными проектами, поэтому заслуженно считается одним из самых популярных веб-серверов. Кроме того, Apache очень гибок в плане настройки, что даёт возможность реализовать все особенности размещаемого веб-ресурса.

История создания

Apache HTTP Server был выпущен в 1995 году разработчиком Робертом Маккулом из Университета штата Иллинойс (UIUC). Продукт возник как доработанная версия другого HTTP-клиента – NCSA HTTPd 1.3, созданного Робертом ранее.

Основой для модификации стали многочисленные «патчи» или программные «заплатки» для NCSA. Именно отсюда (а не от индейского племени апачей) изначально и происходит название Apache. Оно расшифровывается как «a patchy server» или «сервер с патчами».

Разработкой и поддержкой продукта с 1999 года занимается организация Apache Software Foundation (ASF) – сообщество экспертов-энтузиастов со всего мира. Этим же некоммерческим фондом была создана официальная лицензия ПО – Apache License.

В 2000 году ASF представило новую версию Apache 2.0 с полностью переработанной архитектурой, свободной от кода NCSA. С этого момента веб-сервер развивается по двум основным веткам – 1.х и 2.х.

Как устроен Apache

Архитектура

Apache состоит из ядра и динамической модульной системы. Параметры системы изменяются с помощью конфигурационных файлов.

Ядро

Ядро Apache разработано Apache Software Foundation на языке C. Основные функции — обработка конфигурационных файлов, протокол HTTP/HTTPS и загрузка модулей. Ядро может работать без модулей, но будет иметь ограниченный функционал.

Модульная система

Модуль – отдельный файл, подключение которого расширяет изначальный функционал ядра. Они могут включаться в состав ПО при первоначальной установке или подгружаться позже через изменение конфигурационного файла.

Большинство из них отвечает за определенный аспект обработки клиентского запроса – поддержку различных языков программирования, безопасность, кэширование, аутентификацию и т.д. Таким образом, большая задача разбивается на несколько фаз, каждую из которых решает отдельный, узкоспециализированный модуль.

Для Apache существует больше 500 модулей. Многие популярные веб-приложения сразу выпускаются в виде модуля к Apache. Например, ISPmanager и VDSmanager.

Конфигурация

Система конфигурации Apache работает на текстовых файлах с прописанными настройками. Она подразделяется на три условных уровня, для каждого из которых имеется свой конфигурационный файл:

  1. Уровень конфигурации сервера (файл httpd.conf) – основной конфигурационный файл. Действие распространяется на весь механизм веб-сервера.
  2. Уровень каталога (файл .htaccess) – дополнительный конфигурационный файл. Его директивы охватывают только каталог, где расположен файл, а также вложенные подкаталоги.
  3. Уровень виртуального хоста (файл httpd.conf> или extra/httpd-vhosts.conf).

Обычно конфигурационные файлы Apache находятся в папке «conf», а дополнительные конфигурационные файлы во вложенной в нее папке «extra». Внести изменения можно как через редактирование самого файла, так и через командную строку.

Виртуальные хосты

Веб-хост – это компонент сервера, отвечающий за обслуживание одного размещенного на нем объекта (сайта, виртуального сервера). Система виртуальных хостов Apache позволяет одновременно запускать несколько проектов с одного IP-адреса.

В Apache можно установить настройки модуля и ядра, а также вводить лимиты на потребление серверных ресурсов (трафик, RAM, CPU) для каждого виртуального хоста в отдельности. Это технологическая основа всего механизма веб-хостинга.

Достоинства и недостатки Apache

Плюсы

  • Доступность. Это программное обеспечение с открытым исходным кодом. Значит, его может бесплатно использовать или модифицировать любой желающий. Разработчики по всему миру создают конфигурации и модули веб-сервера для своих специфических нужд. По этой же причине Apache регулярно получает полезные дополнения, расширяющие его базовый функционал.
  • Гибкость настройки. Apache использует несколько конфигурационных файлов для управления веб-сервером. Это позволяет настроить ПО под узконаправленные задачи.
  • Функциональность. У Apache динамическая модульная структура. Можно быстро подключать дополнительный функционал в виде скачиваемых модулей, даже без обращения к внешним источникам. Это позволяет решать целый комплекс важнейших задач в области безопасности, кэширования, редактирования URL, распределения нагрузки. Благодаря гибридным модулям MPM, Apache может одинаково успешно обслуживать статический и динамический контент. Есть возможность оперативно отключать ненужные модули и ускорять работу веб-сервера
  • Кроссплатформенность. Apache работает как на Windows, так и на всех Unix-подобных системах. Администрирование веб-сервером не имеет серьёзных отличий на разных ОС. Индивидуален только процесс установки и расположение директорий с файлами программы.
  • Совместимость. Apache работает на базе скриптовых или веб-ориентированных языков (PHP, Python, Tcl, Ruby, Perl, ASP), что делает его совместимым с самым широким спектром баз данных и серверного ПО. Многие веб-приложения и инструменты сразу выходят со средствами запуска из-под Apache в виде PHP-модуля. Веб-сервер, поддерживает технологии FastCGI и CGI, позволяющие пользоваться программными продуктами на объектно-ориентированных языках Java, sh, C, C++.
  • Масштабируемость. Подходит для веб-ресурсов любого масштаба. Apache хорошо работает как на одностраничном сайте (лендинге), так и на многостраничном сайте с ежедневной аудиторией в десятки тысяч посетителей.
  • Поддержка пользователей. Apache удерживает первенство популярности среди веб-серверов с 1996 года. За прошедшее время для него создана обширнейшая база документации – как официальной, так и созданной сторонними разработчиками. Готовые, подробно описанные руководства можно найти практически на любой сценарий.

Минусы

  • Производительность. Скорость обработки запросов Apache несколько ниже, по сравнению со своими конкурентами. Гибкость веб-сервера в некоторых случаях вредит производительности. Например, Apache приходится каждый раз считывать несколько конфигурационных файлов на сервере, затрачивая системные ресурсы и время. Но этот и многие другие факторы можно исправить, отключив ненужные опции. Правда в таком случае функциональность Apache не будет сильно отличаться от других веб-серверов.
  • Сложная конфигурация повышает уязвимость. Возможность подключать модули в Apache это не всегда преимущество. Чем больше модулей, тем сложнее становятся настройки. Соответственно, больше шансов допустить критические пробелы в контуре безопасности.
  • Синтаксис конфигов.. В файлах с параметрами программы используются разнообразные переменные, поэтому настройка и управление веб-сервером может показаться сложной новичкам. Упростить администрирование Apache можно с помощью бесплатного инструмента Apache GUI.
  • Излишний функционал. Даже без дополнительных модулей Apache предоставляет пользователям массу возможностей. Правда, большинство использует лишь небольшую часть базового функционала приложения. Поэтому часто после установки приходится тратить время на отключение «лишних» модулей.

Альтернативы Apache

NGINX

Nginx (Engine-X, «энжинкс») — второе по популярности веб-серверное приложение и главный конкурент Apache. Было выпущено в 2004 году под открытой лицензией BSD. Изначально приложение создавалось для решения проблемы масштабирования, известной как «10 тысяч соединений» (С10к). Это значит, что до Nginx веб-сервер не был способен одновременно обрабатывать пользовательские запросы более чем с 10 000 подключений.

У этого веб-сервера асинхронная событийно-ориентированная архитектура (event-driven), которая позволяет добиваться быстрого масштабирования даже при минимальных ресурсах. Вместо того, чтобы создавать новый процесс для каждого пользовательского запроса, Nginx обрабатывает множество соединений в едином потоке.

Nginx отлично подходит для веб-проектов с высокой посещаемостью. Однако веб-сервер не может самостоятельно работать с динамическим контентом. Поэтому его чаще используют для статических веб-сайтов или например, в связке с PHP-FPM или Apache HTTP Server как прокси-сервер.

Lighttpd

Веб-сервер Lighttpd (произносится «лайти») — кроссплатформенное программное обеспечение на языке С. Выпущено в 2003 году под лицензией BSD. «Лайти» работает на операционных системах Windows и семейства Unix/Linux. Приложение поддерживает технологии FastCGI, SCGI, HTTP proxy, Auth, перезаписи URL и AJP (с версии 1.5).

Как и Nginx, изначально «Лайти» создавалось для решения проблемы «С10к». Неудивительно, что его специализация — веб-проекты с большой посещаемостью. В числе компаний, использующих Lighttpd, такие гиганты, как Google, Википедия, Яндекс и Ubuntu.

Microsoft IIS

Internet Information Services (IIS) — набор сервисов для создания веб-сервера от компании Microsoft. Распространяется в комплекте с операционными системами Windows NT как дополнительно устанавливаемый компонент. Веб-сервер поддерживает технологии CGI, FastCGI, ISAPI и SSI.

Главная сила IIS – в глубокой интеграции и поддержке продуктов Microsoft. Его часто выбирают те, чьи ресурсы работают на движке ASP. NET и используют скриптовый язык ASPX. Главный недостаток – жесткая привязка к операционной системе Windows и отсутствие версий для Unix/Linux.

Tomcat

Apache Tomcat — это контейнер сервлетов, который обрабатывает спецификации Java. Например, Java Servlet, Java Server Pages (JSP), Java EL и WebSocket. Продукт был разработан фондом Apache Software Foundation на основе открытой лицензии  Apache License 2.0. Tomcat используется как в качестве самостоятельного веб-сервера, так и в связке с Apache HTTP Server.

Приложение написано на языке Java и способно автоматически загружать Java-библиотеки. Его основная специализация — веб-проекты с динамическим содержимым. Но у Apache Tomcat хуже возможности для настройки, что сужает его сферу применения. Например, для запуска WordPress эффективнее использовать обычный HTTP-сервер Apache.

Заключение

Сервер Apache – универсальный инструмент для быстрого и безопасного запуска интернет-проектов разного масштаба. Веб-сервер совместим с большинством существующих операционных систем, программных  продуктов и языков разработки.
Система конфигурационных файлов дает «Апач» гибкие возможности для настройки, а динамически подгружаемые модули расширяют функционал до максимума. Особенно эффективно использовать веб-сервер Apache в связке с ближайшим аналогом – Nginx.

Для работы с «Апач» пользователю нужен определенный уровень IT грамотности. Желательно знать основы программирования и веб-администрирования. Но процесс сильно упрощает активное сообщество поддержки и отлично развитая база официальной документации.

Раскройте все возможности и преимущества веб-сервера Apache с надёжным хостингом от Eternalhost!

Оцените материал:

[Всего голосов: 3    Средний: 5/5]

что это такое и как им пользоваться

Apache – один из самых популярных в мире веб-серверов. Начинающие вебмастера не всегда понимают, что представляет собой Apache и как происходит взаимодействие с таким программным обеспечением.

Далее я постараюсь максимально подробно рассказать о нем, приводя объяснения общим терминам.

Понятие «веб-сервер‎»

Перед тем как переходить непосредственно к разбору Apache, кратко затрону понятие веб-сервера, ведь рассматриваемое программное обеспечение таковым и является. 

Веб-сервер – средство для обслуживания сайта в интернете. Он обрабатывает файлы, базы данных и всю информацию, хранящуюся на ресурсе. Веб-сервер занимается тем, что доставляет данные с серверного компьютера на устройство конечного пользователя в режиме реального времени, имея доступ ко всем файлам. Несколько запросов может обрабатываться одновременно, при этом не возникает проблем с файлами, написанными на совершенно разных языках программирования. При обработке все они превращаются в HTML-код и отправляются на обработку в браузер.

Теперь вы можете воспринимать веб-сервер как своеобразного посредника между сервером, где хранятся все данные, и пользователем. Из этого становится понятно, для чего нужен веб-сервер Apache, но пока не очень ясно, чем он отличается от других решений и какие имеет преимущества.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Работа веб-сервера Apache

Веб-сервер Apache – это программное обеспечение, которое установлено на сам сервер. Как мы уже поняли, благодаря ему устанавливается соединение между юзером, использующим браузер, и сервером, чтобы осуществить передачу данных при запросе. Пользователь переходит на страницу, далее отправляется сигнал на обработку, Apache находит необходимые данные и возвращает их пользователю, чтобы тот смог ознакомиться с ними. Работает это и в обратном направлении, примерно по такому же принципу.

Все остальное зависит от подключаемых модулей, которые существуют для Apache Web Server, то есть его можно назвать модульным (собираемым из разных дополнений, расширяющих функциональность). Здесь уже создатель сайта сам решает, какие дополнения установить, редактируя конфигурацию через специальный файл под названием .htaccess. Дополнений существует множество – начиная со средств повышения безопасности и заканчивая модулями аутентификации пользователей при вводе учетных данных.

Пример использования файла .htaccess

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

Самая простая строка кода, вводимая в этот файл выглядит так:


AddType "text/html; charset=koi8-r" .html .htm .shtml

Ее основное предназначение – указать Apache кодировку, в которой нужно возвращать текст пользователю. Такое изменение делается в тех случаях, когда стандартный вывод вас не устраивает.

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

Если вы нуждаетесь в получении дополнительной информации о виртуальном хостинге с этим веб-сервером, ознакомьтесь с документацией Virtual Apache Host на официальном сайте разработчика ПО.

Подробнее: Apache Virtual Host documentation

Сравнение Apache с другими веб-серверами

Есть и другие веб-серверы, обладающие своими преимуществами и недостатками. Обо всех них в рамках этой статьи говорить не будем, рассмотрим лишь пару достойных конкурентов.

Начнем с самого известного решения – Nginx. Здесь сказать можно только одно – его главным преимуществом является преодоление барьера в 10 000 одновременных соединений. Apache не может обработать такой большой поток трафика сразу, поэтому многие вебмастера и переключились на альтернативу, когда масштабы их проекта значительно увеличились. Связано это с поточной структурой Apache и невозможностью реализовать прохождение такого барьера. Однако в некотором плане Апач превосходит Nginx, если говорить о простоте настройки, подключении модулей и юзерфрендли-подходе от разработчиков.

Примечание. Хостинг Timeweb на своих серверах использует связку Nginx+Apache: Nginx отдает статический контент, а Apache подключается позже и отвечает за обработку динамического контента.

Второй конкурент – Tomcat, его разработала та же компания, что и Apache, но уже для других целей. Он используется для работы приложений, написанных на Java, а Apache-сервер – это HTTP-направленный инструмент. Если вы не используете Java, а управляете статическими веб-страницами, переключаться на Tomcat точно не стоит.

Установка Apache на компьютер

Если вы хотите самостоятельно попробовать Apache, организовав полноценно работающий сайт с веб-сервером, базой данных и другими компонентами, воспользуйтесь информацией, предоставленной на официальном сайте. Там вы найдете все необходимые файлы для Windows, архивы и команды инсталляции для Linux, а также объяснения всех тонкостей, связанных с настройкой данного компонента.

Кстати, на «Комьюнити» есть отдельная инструкция, посвященная тому, как использовать Apache в качестве обратного прокси на Ubuntu. Это полезный материал для всех тех, кто хочет узнать больше о расширенных возможностях этого веб-сервера.

Подробнее: Как использовать Apache в качестве обратного прокси при помощи mod_proxy на Ubuntu 16.04

Преимущества и недостатки Apache

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

Плюсы

Начну с положительных моментов, поскольку многие из них становятся решающими при выборе первого веб-сервера для своего проекта. Перечислю только самые влиятельные факторы.

  • Открытый исходный код. Он позволяет не только бесплатно скачивать программу, но и изменять ее под свои цели, чем и занимаются многие компании по всему миру, составляя уникальные конфигурации.
  • Простота настройки. Помимо того, что в Apache есть огромное количество настроек, их редактирование остается таким же простым, а за вспомогательной информацией всегда можно обратиться к официальной документации.
  • Модульная структура. Считаю, что возможность подключения любого количества модулей значительно расширяет функциональность веб-сервера, делая его универсальным.
  • Кроссплатформенность. Скачать веб-сервер можно для любой операционной системы (но не для мобильной). При этом процесс настройки не меняется, различается только принцип инсталляции и расположение каталогов. Остается таким же и создание сайтов. Apache можно освоить как в Windows, так и в Linux или macOS.
  • Масштабируемость. Данный веб-сервер подойдет как для одного сайта, так и для нескольких, расположенных на одном виртуальном хостинге.

Минусы

К сожалению, не обошлось и без минусов, поскольку невозможно создать идеальное программное обеспечение для любых целей.

  • Влияние трафика на производительность. Apache работает медленно, если наплыв пользователей слишком большой.
  • Дыры в безопасности. Это относится только к тем случаям, когда к веб-серверу подключено огромное количество модулей. Чем их больше, тем сложнее процесс конфигурирования, появляются уязвимые места и дыры.
  • Редактирование файлов в Linux. Управление конфигурационными файлами в этих дистрибутивах осуществляется вручную без графического интерфейса, что не всегда удобно (в качестве рекомендации могу подсказать приложение Apache GUI, благодаря которому настройку можно выполнить через веб-обозреватель).

Apache – несомненно, один из лучших веб-серверов, в чем вы смогли сами убедиться, дочитав мой обзор. 

Что такое ошибка 500, когда возникает и как устранить

Ошибка с кодом 500 выдается в том случае, когда причину сбоя нельзя отнести ни к какой другой категории ошибок (502, 503 и т.  д.). По сути она означает «что-то произошло, а что — непонятно». В сообщении об ошибке 500, которое выдается на странице браузера, стандартно также нет сведений о ее причинах.

Как же без наличия информации определить и исправить ошибку? На практике чаще всего она вызывается сбоями в одном из основных компонентов сайта:

  • в правах доступа к файлам и каталогам;
  • в файле .htaccess;
  • в скриптах;
  • в CMS (движке сайта).

Сразу отметим, что сбои происходят на стороне сервера, а не клиента. От браузера и операционной системы пользователя здесь ничего не зависит, и нужно искать причину ошибки 500 в конфигурации программного обеспечения сайта.

Для определения причины ошибки:

  • смотрим логи сервера — часто по ним можно понять, на каком этапе произошел сбой;
  • если логи не добавили ясности, или вы не можете их посмотреть — перебирайте все возможные варианты, начиная с тех, которые кажутся наиболее вероятными в вашем случае. Например, если вы не трогали перед возникновением ошибки файл .htaccess, но устанавливали новые плагины на сайт, начать нужно с проверки последнего.

Некорректные права доступа

Каждый каталог и файл на сервере имеет определенную трехзначную кодировку прав доступа к нему. Например, 777 — такой доступ означает, что любой сторонний пользователь может изменять этот файл или папку. Для обеспечения безопасности сервер блокирует файлы, которые имеют такие широкие права доступа. В результате страница сайта не отображается, так как сервер не отдает содержимое нужных файлов, и выдается ошибка 500.

Рекомендуется выставлять права не выше 750 — для папок, и 640 — для исполняемых файлов.

Если вы недавно создавали новый каталог на сервере или загружали новые файлы, у них могут быть слишком широкие права доступа. Проверьте и исправьте их.

Как определить, что ошибка 500 возникла именно из-за этого?

Во-первых, посмотрите, какой вид имеет ошибка на экране браузера. Если вы видите текст «Internal Server Error» — то, скорее всего, дело именно в .htaccess. В случаях сбоев в работе скриптов или CMS текст ошибки обычно выглядит как «HTTP ERROR 500».

Во-вторых, попробуйте добавить в конец наименования файла .htaccess любые символы. Например, переименуйте его в .htaccess2233. Сервер не будет использовать переименованный файл, и сайт будет запускаться без него. Перезагрузите страницу, на которой была ошибка. Если она исчезла — значит, причина в .htaccess.

Что может быть неверным в файле и как это исправить?

Самый простой способ устранить ошибку 500 из-за .htaccess — отменить последние изменения в нем или загрузить файл из бекапа. Если это невозможно или нежелательно, проверьте эти варианты:

  • наличие невидимых неразрывных пробелов (BOM). Если вы изменяли файл, используя не совсем подходящий редактор или кодировку, в него могли быть добавлены такие символы. Пересохраните файл в кодировке UTF-8 и загрузите на сервер;
  • знак # не в начале строки. Этот знак ставится перед началом комментария. Некоторые пытаются добавить комментарий в .htaccess в конце строки, но последние версии Apache не поддерживают такой синтаксис, и в результате вы видите ошибку 500. Для комментария нужно выделять целую строку;
  • некорректные директивы Options. В зависимости от версии серверного ПО, можно их либо полностью закомментировать, либо попробовать исправить Options All -Indexes на директиву Options -Indexes, а Options +FollowSymLinks на директиву Options +SymLinksIfOwnerMatch;
  • некорректные директивы +ExecCGI, IfVersion, AddHandler, php_value, php_flag, MultiViews. Если в вашем файле встречаются такие, попробуйте поочередно их удалить (или закомментировать), проверяя, исчезла ли ошибка.

Сбои в скриптах

Ошибка 500 здесь может вызываться двумя основными причинами:

  • Неверный синтаксис или права доступа скрипта.
  • Слишком долгое выполнение скрипта.

В первом случае:

  • включите отображение ошибок в настройках сервера (или обратитесь к техподдержке, они помогут это сделать). Тогда при перезагрузке страницы вы увидите надпись, в которой будет имя файла и конкретная строка в нем, вызывающая ошибку;
  • проверьте, правильно ли вы загружали файлы скриптов через FTP , а лучше перезагрузите их правильным образом — в режиме ASCII. Хотя для некоторых FTP-клиентов, например, для FileZilla, лучше включать двоичный режим передачи: так содержимое файлов будет передано корректно и без искажений;
  • проверьте права доступа к файлу скриптов — они должны быть выставлены на уровне 750 или 755.

Во втором случае проверьте, достаточно ли у вас оперативной памяти на тарифе, посмотрите логи, чтобы определить, как долго выполняется скрипт. Для исправления ошибки 500, возможно, потребуется оптимизировать скрипт для более экономного использования памяти или перейти на расширенный тариф.

Ошибки в CMS

  • Довольно часто ошибка 500 возникает после установки плагинов и дополнений к CMS<. Особенно это актуально на WordPress. Сайт на этом движке, как конструктор, собирается из базы и десятков различных плагинов. При этом плагины могут конфликтовать между собой. Решение простое — отключите дополнения, которые вы недавно устанавливали, и посмотрите, исчезнет ли ошибка. Если да — дело в плагине и лучше поставить другой.
  • Устаревшая версия PHP. Она может конфликтовать с новыми скриптами или плагинами. Для обновления версии обратитесь к специалисту.
  • Обновление версии движка. Такие работы также лучше проводить при поддержке специалистов, которые комплексно проверят совместимость скриптов и дополнений с новой версией. Иначе можем получить конфликт и ошибку 500.

apache — Почему файл Apache2 .htaccess не читается? («Опции -Индексы» в файле .htaccess не работают)

Спросил

Изменено 21 день назад

Просмотрено 77k раз

Я создал файл . htaccess только со следующей строкой:

Опции — Индексы

Однако для каталога по-прежнему отображается индекс.

Я только что установил Apache2 и использую все значения по умолчанию (я не модифицировал apache2.conf или httpd.conf).

ОС: Ubuntu 12.04 (Precise Pangolin)
Версия Apache2: Версия сервера: Apache/2.2.22 (Ubuntu) Сервер построен: 13 февраля 2012 г. 01:51:56

$ ls -l .htaccess
-rwxr-xr-x .htaccess

РЕДАКТИРОВАТЬ:

Я последовал совету Ланца и добавил тарабарщину в файл .htaccess и обнаружил, что .htaccess файл не читается.

  • апач
  • .htaccess

6

Вы должны убедиться, что конфигурация Apache позволяет выполнять .htaccess. В конфигурации вашего виртуального хоста должна быть строка:

AllowOverride All

Если ее нет, то . htaccess не действует.

6

Чтобы это заработало, я добавил следующее в /etc/apache2/httpd.conf (который по умолчанию является файлом нулевой длины при установке Apache), а затем перезапустил Apache. Теперь Options -Indexes в файле .htaccess работает как надо. Вот минимум, необходимый для его работы:

/etc/apache2/httpd.conf :

 
        Корень документа /var/www
        <Каталог/>
        

 

Предложение Ланза добавить строку тарабарщины в .htaccess , чтобы узнать, читается ли он, помог в диагностике проблемы.

Обратите внимание, что AllowOveride по умолчанию имеет значение All , согласно комментарию Эвана Мулавски, поэтому это не требуется в минимальном наборе строк httpd.conf выше.

3

У меня была такая же проблема. Я использовал виртуальный хост, поэтому я изменил httpd-vhosts.conf, поэтому, если вы используете его, это может помочь

Если вы настраиваете свой хост, ссылайтесь на тег каталога, чтобы он был таким же, как ваш корень документа

 <Виртуальный хост *:8080>
имя_сервера
DocumentRoot "C:/Веб-сайты/htdocs/вашсайт"
<Каталог "C:/Веб-сайты/htdocs/вашсайт">
    Параметры
    Разрешить переопределить все

 

Мне нужно AllowOverride All , чтобы распознать файл .htaccess.

Редактировать

Мне также нужно было добавить путь к корню сайта в самом теге каталога. то есть . Это было по умолчанию в образцах, которые я использовал.

1

Поскольку файла httpd.conf больше нет, вам нужно сделать следующее на VPS:

  • Выполните ls , чтобы найти файл для веб-сайта, который вы ищете
  • Отредактируйте соответствующий файл с помощью nano THE_CONF_FILE или любого другого редактора, который вам нужен
  • Изменить все AllowOverride Нет значения, которые вы видите в разных . .. 9от 0022 с до AllowOverride All
  • Сохраните файл и закройте его

  • Теперь вам нужно включить перезапись модуля, выполнив команду: sudo a2enmod rewrite

  • И, наконец, чтобы активировать новую конфигурацию, вам нужно запустить: перезапуск службы apache2
  • Теперь все будет работать как по маслу!

    3

    Если у вас есть

     AllowOverride Нет
     

    Измените это на:

     Разрешить переопределить все
     

    в вашем httpd.conf или в вашем файле виртуального хоста по умолчанию в in /etc/apache2/sites-available/...conf

    Я решил эту проблему на RHEL, отредактировав файл /etc/http/conf/httpd.conf Я изменил все

     AllowOverride Нет
     

    До

     AllowOverride All
     

    Также вы можете проверить httpd.conf AllowOverride, выполнив команду на RHEL

     grep -i AllowOverride /etc/conf/conf/httpd. conf
     

    Кроме того, помимо изменения AllowOverride All в файле конфигурации виртуального хоста, вам также может понадобиться добавить следующее в начало файла .htaccess:

     RewriteEngine вкл.
    Переписать Базу /
     

    В противном случае может по-прежнему не обнаруживаться перезапись или перенаправление.

    Еще одна причина, по которой файл htaccess не читается, заключается в том, что существующий htaccess применяет перенаправление HTTPS 301, которое браузер затем кэширует, что может быть проблемой, если виртуальные хосты настроены неправильно. Полное объяснение ниже.

    Если вы настраиваете виртуальный хост, например, в Apache и XAMPP, при первом запуске URL-адреса вашего виртуального хоста, если у вас есть существующий файл htaccess с перенаправлением HTTPS 301, ваш браузер будет перенаправлен на HTTPS-версия вашего виртуального хоста. Но есть потенциальная проблема. Если вы явно не настроили виртуальный хост *:433 для рассматриваемого домена, в файле конфигурации Apache vhosts Apache по умолчанию будет использовать первый указанный виртуальный хост.

    В зависимости от содержимого этого виртуального хоста по умолчанию может быть невозможно понять, что происходит, и пользователь будет безумно пытаться определить, почему изменения в файле htaccess больше не обрабатываются.

    Как только вы определите, что происходит, обходной путь — отключить любые перенаправления HTTPS, перезагрузить компьютер и повторить попытку без HTTPS. Реальное решение — завершить полную настройку виртуального хоста 443 с сертификатом.

    Твой ответ

    Зарегистрируйтесь или войдите в систему

    Зарегистрируйтесь с помощью Google

    Зарегистрироваться через Facebook

    Зарегистрируйтесь, используя электронную почту и пароль

    Опубликовать как гость

    Электронная почта

    Обязательно, но не отображается

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    apache - .

    htaccess ErrorDocument 404 не отображается

    Спросил

    Изменено 7 месяцев назад

    Просмотрено 310k раз

    У меня есть сервер службы AWS EC2, работающий на Linux Ubuntu, и я установил apache, php и mysql.

    Я добавил .htaccess в корневом каталоге моего документа /var/www/html .

    Я ввел в него этот код: ErrorDocument 404 /var/www/html/404.php и до сих пор не отображается.

    Я продолжал вводить эту команду несколько раз: sudo service httpd restart для перезагрузки сервера, но никаких изменений не отображается...

    Как это исправить... Я сделал что-то не так?

    • apache
    • .htaccess
    • amazon-ec2
    • amazon-веб-сервисы
    • Apache-конфигурация

    1

    Во-первых, обратите внимание, что перезапуск httpd не требуется для файлов . htaccess. Файлы .htaccess предназначены специально для людей, у которых нет root-прав, то есть у которых нет доступа к файлу конфигурации сервера httpd и которые не могут перезапустить сервер. Поскольку вы можете перезапустить сервер, вам не нужны файлы .htaccess, и вы можете напрямую использовать конфигурацию основного сервера.

    Во-вторых, если файлы .htaccess игнорируются, необходимо проверить правильность настройки AllowOverride. Подробнее см. http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride. Вам также необходимо убедиться, что он установлен в правильной области действия, т. е. в правильном блоке вашей конфигурации. Убедитесь, что вам НЕ редактирование того, что в блоке, например.

    В-третьих, если вы хотите убедиться, что файл .htaccess действительно читается, забросьте в него мусор. Недопустимая строка, такая как «INVALID LINE HERE», в вашем файле .htaccess приведет к ошибке сервера 500, когда вы укажете браузеру каталог, содержащий этот файл. Если это не так, то у вас неправильно настроен AllowOverride.

    6

    1. Включить модуль Apache mod_rewrite

      a2enmod перезаписать

    2. добавьте следующий код в /etc/apache2/sites-available/default

      Разрешить переопределение Все

    3. Перезапустите апач

      /etc/init.d/apache2 перезапустить

    8

    Если вы попробовали все вышеперечисленное, все из которых являются правильными и хорошими ответами, и ваш файл htaccess не работает или не читается, измените директиву в Файл apache2.conf . В Ubuntu путь /etc/apache2/apache2.conf

    Измените директиву , указывающую на ваши общедоступные веб-страницы, где находится файл htaccess. Изменение с AllowOverride None на AllowOverride All

     <Каталог /var/www/>
    Индексы опционов FollowSymLinks
    Разрешить переопределить все
    Требовать все предоставленные
    
     

    У меня была та же проблема, и я нашел ответ и объяснение на Ubuntu Ask! форум https://askubuntu. com/questions/421233/enbling-htaccess-file-to-rewrite-path-not-working

    3

    Для Ubuntu,
    Сначала запустите эту команду: -

     sudo a2enmod rewrite
     

    Затем отредактируйте файл /etc/apache2/sites-available/000-default.conf с помощью nano или vim с помощью этой команды: —

     sudo nano /etc/apache2/sites-available/000-default.conf
     

    Затем в файле 000-default.conf добавьте это после строки DocumentRoot /var/www/html . Если ваш корневой html-каталог отличается от другого, напишите так: -

     <Каталог "/var/www/html">
      Разрешить переопределить все
    
     

    Сделав все, перезапустите apache с помощью команды sudo service apache2 restart

    Скорее всего, для AllowOverride установлено значение None. в разделе Directory файла apache2.conf, расположенном в папке /etc/apache2

    Попробуйте установить для него значение AllowOverride All

    Просто выполните 3 шага

    1. Включите mode_rewrite с помощью следующей команды

      sudo a2enmod переписать

    Будет запрошен пароль. Поэтому введите свой пароль

    1. Обновите файл 000-default.conf или default.conf , расположенный в каталоге /etc/apache2/sites-available/ . вы не можете редактировать его напрямую. поэтому используйте следующую команду, чтобы открыть

      sudo gedit /etc/apache2/sites-available/000-default.conf

    Или sudo gedit /etc/apache2/sites-available/default.conf

    вы получите

    DocumentRoot /var/www/html

    ИЛИ

    DocumentRoot /var/www

    линия. Добавьте следующий код после него.

     <Каталог /var/www/html/>
    Индексы опционов FollowSymLinks
    Разрешить переопределить все
    Требовать все предоставленные
    
     

    Сделать пользователем путь к тегу каталога таким же, как показано в вашем файле.

    1. Перезапустите сервер Apache с помощью следующей команды

      перезагрузка службы sudo apache2

    1

    По моему опыту, директива каталога /var/www/ запрещает директивы виртуального хоста для подпапок. Итак, если вы испробовали все предложения и все еще не работаете, и вы используете виртуальные хосты, попробуйте это;

    1 - Убедитесь, что у вас есть AllowOverride All директива в /etc/apache2/sites-available/example.com.conf

    2 - Проверьте /var/www/ директивы каталога в /etc/apache2/apache2.conf (возможно, в строке 164), что выглядит как ;

     <Каталог /var/www/>
            Индексы опционов FollowSymLinks
            Аллововеррайд
            Требовать все предоставленные
    
     

    Если имеется директива AllowOverride None , измените ее на AllowOverride All или просто экранирующая строка

    По умолчанию Apache запрещает использование файла .htaccess для применения правил перезаписи, поэтому

    Шаг 1 — Включение mod_rewrite (если не включено) Во-первых, нам нужно активировать mod_rewrite. Он доступен, но не включен при чистой установке Apache 2.

     $ переписать sudo a2enmod
     

    Это активирует модуль или предупредит вас о том, что модуль уже включен. Чтобы эти изменения вступили в силу, перезапустите Apache.

     $ sudo systemctl перезапустить apache2
     

    mod_rewrite теперь полностью включен. На следующем шаге мы создадим файл .htaccess, который будем использовать для определения правил перезаписи для перенаправлений.

    Шаг 2 — Настройка .htaccess Откройте файл конфигурации Apache по умолчанию с помощью nano или вашего любимого текстового редактора.

     $ sudo nano /etc/apache2/sites-available/000-default.conf
     

    Внутри этого файла вы найдете блок, начинающийся с первой строки. Внутри этого блока добавьте следующий новый блок, чтобы ваш файл конфигурации выглядел следующим образом. Убедитесь, что все блоки имеют правильный отступ.

    /etc/apache2/sites-available/000-default.conf

     
        <Каталог /var/www/html>
            Опционы Индексы FollowSymLinks MultiViews
            Разрешить переопределить все
            Требовать все предоставленные
        
        .  . .
    
     

    Сохраните и закройте файл. Чтобы эти изменения вступили в силу, перезапустите Apache.

     $ sudo systemctl перезапустить apache2
     

    Готово. Ваш .htacess должен работать. Эта ссылка может действительно кому-то помочь 1

    Перейдите в /etc/apache2/apache2.conf

    Вы должны отредактировать этот файл (у вас должно быть разрешение root). Измените текст каталога, как показано ниже:

    <Каталог /var/www/>
    Параметры Индексы FollowSymLinks
    AllowOverride All
    Требовать все предоставлено

    Теперь вам нужно перезапустить apache.

    перезапуск службы apache2

    Я очистил это использование. Используя этот сайт, нажмите здесь, следуйте инструкциям, те же шаги следуют до версии ubuntu 18.04

    В WampServer Откройте значок WampServer Tray ----> Apache ---> Модули Apache --->rewrite_module

    Для полноты, если «AllowOverride All» не решает вашу проблему, вы можете отладить эту проблему, используя:

    1. Запустите apachectl -S и посмотрите, есть ли у вас более одного namevhost. Возможно, httpd ищет .htaccess другого DocumentRoot.

    2. Используйте strace -f apachectl -X и посмотрите, откуда загружается (или не загружается) .htaccess.

    у меня много сайтов на виртуальной машине, и я решил это только изменив конфиг сайта в котором мне нужно .htaccess

    что я сделал:

    1. sudo a2enmod переписать

    далее я изменил конфигурацию только для конкретного сайта, а не для каждого сайта "example.com"

    1. sudo nano /etc/apache2/sites-enable/example.com.conf

    внутри него я добавил

     
        Разрешить переопределить все
    
     
    1. перезапуск службы apache2

    , так что это применимо только к 1 сайту, потому что, когда я попытался применить изменения ко всему серверу, он рухнул, не знаю почему, но это решило мою проблему

    Твой ответ

    Зарегистрируйтесь или войдите в систему

    Зарегистрируйтесь с помощью Google

    Зарегистрироваться через Facebook

    Зарегистрируйтесь, используя электронную почту и пароль

    Опубликовать как гость

    Электронная почта

    Обязательно, но не отображается

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    Прекратите использовать файлы .

    htaccess! Нет, правда.

    Эндрю Уэлч · Аналитика · #devops #craftcms #performance

    Улучшение работы в Интернете по одному сайту за раз с упором на производительность, удобство использования и SEO

    Опубликовано , обновлено · 5 мин чтения ·


    Пожалуйста, рассмотрите возможность 🎗 спонсировать меня 🎗, чтобы я продолжал писать подобные статьи.

    Прекратить использование файлов .htaccess ! Похоже на ересь. Файл .htaccess так долго был стандартной частью мира веб-разработки, что это как старый друг. И все же пора прощаться.

    Файлы .htaccess родились в эпоху, когда виртуальный хостинг был обычным явлением: системным администраторам нужен был способ, позволяющий нескольким клиентам получать доступ к своему серверу под разными учетными записями и с разными конфигурациями для своих веб-сайтов. Файл .htaccess позволил им изменить работу Apache, не имея доступа ко всему серверу.

    Виртуальный выделенный сервер или VPS оставил это в прошлом. Отличные хостинговые компании, такие как Linode, Digital Ocean, Vultr и т. д., предоставляют вам целый виртуализированный сервер, полностью изолированный и автономный. И все же, как приложение, .htaccess сохраняется.

    Действительно, современные веб-серверы, такие как Nginx, даже не имеют понятия файла .htaccess , потому что времена изменились.

    Какая разница, скажете вы? Одним словом: производительность . Не верьте мне на слово, вот что говорят представители Apache Foundation (создатели Apache):

    Вам следует полностью избегать использования файлов .htaccess, если у вас есть доступ к файлу конфигурации основного сервера httpd. Использование файлов .htaccess замедляет работу вашего http-сервера Apache. Любую директиву, которую вы можете включить в файл .htaccess, лучше установить в блоке каталога, так как она будет иметь тот же эффект, но с большей производительностью.

    Широко известный HTML5 Boilerplate также предупреждает об этом:

    (!) Использование файлов `.htaccess` замедляет работу Apache, поэтому, если у вас есть доступ к основному файлу конфигурации сервера (который обычно называется `httpd.conf` ), вы должны добавить эту логику туда.

    У них даже есть целый раздел на apache.org , посвященный Когда (не) использовать файлы .htaccess. Короче говоря, если вы используете файлы .htaccess , каждый отдельный запрос, который обрабатывает веб-сервер — даже для самых низких .png или .css файл — заставляет Apache:

    • Искать файл .htaccess в каталоге текущего запроса в корень сервера
    • Объединить все эти файлы .htaccess вместе
    • Перенастроить веб-сервер с использованием новых настроек
    • Наконец, доставить файл

    Каждый. Одноместный. Запрос. И каждая веб-страница может генерировать десятки запросов. Это накладные расходы, которые вам не нужны, и, более того, они совершенно не нужны, если только вы не находитесь в среде общего хостинга старого образца (и если это так, прекратите читать эту статью и немедленно переключитесь на современный VPS).

    Проблема усугубляется по мере добавления новых вещей в файл .htaccess . Часто это свалка для таких вещей, как правила перезаписи и тому подобное, и чем сложнее ваш файл .htaccess , тем больше накладных расходов добавляется, когда Apache должен анализировать его для каждого запроса.

    Касательная: Лучшим решением для переадресации 301 является обработка системой CMS переадресации только после возникновения исключения 404, например плагин Retour для Craft CMS. Смысл в том, что лучше иметь производительный веб-сервер для большинства обычных запросов, а не для исключительных запросов перенаправления. Есть исключения, конечно: 9/(favicon\.ico|apple-touch-icon.*\.png)$ [NC] RewriteRule (.+) index.php?p=$1 [QSA,L]

    .
    htaccess

    Выглядит достаточно просто. Он просто делает некоторые причудливые вещи, чтобы убедиться, что вы можете иметь красивые URL-адреса без index.php в них, и убедиться, что ошибки 404 перенаправляются через Craft. Это довольно типично для многих систем CMS, которые вы помещаете в файл .htaccess .

    Для каждого домена на вашем веб-сервере существует файл виртуального хоста, который сообщает веб-серверу, как обслуживать веб-страницы для этого домена. Все, что нам нужно сделать, это передать то, что мы использовали, чтобы положить в наши .htaccess в файл виртуального хоста, и все готово. Это действительно так просто.

    Все, от правил перезаписи http -> https до заголовков с истекающим сроком действия, настроек сжатия gzip и других настроек повышения производительности, также будет работать .

    Если он работал в .htaccess, он будет работать и в файле .conf вашего виртуального хоста. Оба являются просто способами настройки вашего веб-сервера, но делать это один раз при запуске веб-сервера, а не при каждом запросе, более эффективно.

    Ссылка Git ’Er Done

    Поскольку вы дочитали до этого места, я предполагаю, что вы готовы освободиться от использования файлов .htaccess . Но как мы это делаем? Простой. Нам просто нужно взять директивы, которые были в файле .htaccess , и поместить их в наш файл Virtual Host .conf . Эти файлы обычно находятся в /etc/httpd/conf.d или /etc/httpd/sites-available в большинстве дистрибутивов Linux.

    Есть еще одна маленькая вещь, которую мы должны сделать. Даже если у нас даже нет файла .htaccess на нашем сервере, Apache все равно будет искать их, если директива AllowOverride скажет ему об этом. Поэтому мы просто устанавливаем AllowOverride none в нашем файле виртуального хоста, и это сообщает Apache, что ему больше не нужно искать файлы .htaccess .

    Вот как выглядит полный файл Virtual Host .conf для Craft CMS. Другие системы CMS должны выглядеть примерно так же:

    bradsformen.
    (.+) /index.php?p=$1 [QSA,L] 9(.+) /index.php?p=$1 [QSA,L]

    Вот и все. Сохраните его, перезапустите Apache с помощью команды sudo apachectl restart и вперед!

    Вы можете спросить, насколько это меняет дело. По правде говоря, это не так уж много. Вы можете ожидать прироста в однозначных цифрах, который будет иметь большее влияние по мере увеличения трафика. Однако, учитывая, насколько совершенно ненужным является использование файлов .htaccess , на самом деле нет никаких причин не внедрять лучшие методы отказа от их использования.

    Даже, казалось бы, небольшой прирост производительности складывается при совместном использовании.

    Если вы хотите получать уведомления о новых статьях, подпишитесь на @nystudio107 в Твиттере.

    Включите JavaScript для просмотра комментариев с помощью Disqus.
    Insights ·

    Композитор для всех нас

    #композитор #php #пакет

    Insights ·

    Fluent Multi-Environment Config для Craft CMS 4

    #craft-4 #craftcms #config

    Инсайты ·

    Создание обратного прокси-сервера для Partytown с помощью AWS Cloudfront

    #JavaScript #aws #интерфейс

    Insights ·

    Матричные блоки Searching Craft CMS

    #craftcms #php #матрица

    ·

    Dock Life: использование Docker для любых целей!

    #devops #докер #dev

    Insights ·

    Немного вкуса Petite-Vue

    #JavaScript #vuejs #graphql

    Инсайты ·

    Пользовательские правила проверки одноранговых блоков матрицы

    #craftcms #craft-3 #php

    Insights ·

    A Vite Buildchain для плагинов и модулей Craft CMS

    #плагин #vite #интерфейс

    ·

    Vite.

    js Интерфейсные инструменты нового поколения + Craft CMS

    #vite #webpack #интерфейс

    ${категория} · ${блог.postDate}

    ${блог.название}

    #${тег.название}

    Убедиться, что .htaccess и mod_rewrite работают должным образом

    Перейти к навигации по документам

    Bolt широко использует общую функцию, называемую «перезапись URL». Этот в основном означает, что вы можете запросить красивый URL-адрес, например /page/about-this-website . в вашем браузере, а за кулисами ваш веб-сервер просто «переведет» это для запуска index.php с правильными параметрами, чтобы Bolt мог производить правильная страница для вас.

    Это не работает из коробки на всех веб-серверах, но это жесткий Требования к использованию Bolt. Если вы читаете эту страницу, вы, вероятно, находитесь в процесс настройки Bolt и после запроса первой страницы вы были перенаправлены на страницу /bolt/userfirst , где вы увидели следующее сообщение об ошибке:

    Одна из трех следующих возможностей создает проблемы:

    • Вы потеряли файл . htaccess
    • Apache игнорирует .htaccess всего
    • Mod_rewrite не включен

    Проверить, работает ли

    .htaccess

    Самый простой способ проверить, использует ли apache ваш файл .htaccess или нет. игнорирует его, это намеренно сломать его.

    Отредактируйте файл .htaccess так, чтобы первая строка читалась как «Тест.»:

     Тест.
    # Установить обработчик по умолчанию
    DirectoryIndex index.php index.html index.htm
    ...
     

    Теперь, если вы обновите страницу в браузере, вы должны увидеть страницу с ошибкой, например это:

    Если вы видите эту ошибку, это на самом деле хороший ! Это означает, что Apache анализируя файл .htaccess , он обнаруживает ошибку, которую мы туда записали! Так далеко, так хорошо!

    Если вы делаете , а не , видите «Внутреннюю ошибку сервера», ваша установка Apache игнорирует .htaccess , и вам нужно это исправить. Как правило, Apache игнорирует .htaccess из-за следующей конфигурации Apache AllowOverride нет . Проверьте конфигурацию вашего виртуального хоста и добавьте/измените до Разрешить переопределить все .

    Пример:

     <Каталог /var/www/site/example.com/>
            Индексы опционов FollowSymLinks
            Разрешить переопределить все
            Требовать все предоставленные
         

    Если вы не уверены, существует ли файл .htaccess и доступен ли он для чтения, загрузите наш тестовый скрипт:

    • Загрузите скрипт здесь: htaccess_tester.php на GitHub
    • При необходимости переименуйте его в htaccess_tester.php .
    • Поместите его в папку, в которую вы положили Bolt.
    • Откройте его в браузере с URL-адресом. (поэтому убедитесь, что вы не получаете к нему доступ в виде файла :// )
    • Если вы получили сообщение об ошибке, вам нужно будет исправить ее, убедившись, что . htaccess файл существует и доступен для чтения.

    Правильно:

    Проверить, работает ли

    mod_rewrite

    Чтобы проверить правильность работы mod_rewrite , выполните следующие действия:

    9.*$ htaccess_tester.php
    • В браузере откройте /test с правильным доменным именем. Таким образом, это должно выглядеть как http://localhost/test или http://example.org/test .
    • Если вы видите следующее, это работает! Если вы видите что-то еще, вам понадобится исправить это.

    Правильно:

    Мой htaccess не работает? Что делать?¶

    Существует множество причин, по которым он может не работать в вашей системе, и эти причины настолько сильно различаются, что мы не можем дать исчерпывающего решения для этого. Что сказал, вот несколько советов, которые могут помочь вам исправить это:

    Включите

    .htaccess в вашем httpd. conf или apache.conf

    Необычно, но возможно, что .htaccess не включен на вашем сайте. если ты размещаете его самостоятельно, это достаточно легко исправить. Откройте свой httpd.conf или apache.conf в текстовом редакторе и найдите раздел :

     <Каталог "/var/www/htdocs">
        Аллововеррайд Нет 

    Изменить AllowOverride строка на:

     Разрешить переопределение всех 

    Обязательно перезапустите Apache после внесения любых изменений в этот файл. Теперь ваш .htaccess должно работать. Вы также можете внести это изменение внутри виртуального хоста, что обычно было бы предпочтительнее, но это зависит от того, как настроен Apache вверх.

    Если ваш сайт размещен в другом месте, проверьте панель управления (Plesk, DirectAdmin, CPanel, что угодно), чтобы узнать, можно ли включить там .htaccess . Если нет, обращайтесь ваш хостинг-провайдер, чтобы сделать это за вас.

    Включить

    mod_rewrite в Apache¶

    Есть несколько способов включить mod_rewrite , если он еще не включен на вашей установке. См. этот поток переполнения стека для различных способов, которыми это можно сделать. на разных установках: Как включить mod_rewrite для Apache 2.2.

    Проверка файлов журналов Apache¶

    Apache регистрирует партии материалов. Проверьте журналы «доступа» и «ошибки», созданные Apache, чтобы узнать, содержат ли они ценную информацию. Обычное место для этих файлов /var/log/apache2/ , но он может находиться по другому пути на вашем система. Проверьте файл apache .conf , чтобы увидеть, где эти файлы могут быть скрыты.

    Включение Rewritebase¶

    Если вы настраиваете Bolt во вложенной папке, возможно, вам придется раскомментировать строку для настройки RewriteBase .

    Изменить

     # Некоторые серверы требуют установки RewriteBase.  Если это так, установите правильную папку.
      # Переписать базу/

    до:

     # Некоторые серверы требуют установки RewriteBase. Если это так, установите правильную папку.
      Переписать базу / 

    Переместите свой сайт на «верхний уровень»¶

    Если вы настраиваете Bolt во вложенной папке и предыдущий совет не работает, вы можно попробовать настроить Bolt на собственном поддомене, так как это обычно дает меньше проблемы. Итак, вместо использования http://example.org/testingbolt установите его как http://testingbolt.example.org/.

    Обратитесь к своему веб-хостингу¶

    Спросите своего веб-хостинга, что может быть не так. Чем больше информации вы им дадите, тем больше шанс, что они могли бы быть в состоянии помочь вам.

    Использовать предварительно настроенную сборку Apache¶

    Если вы настраиваете Apache на своем компьютере, а он оказывается сложно настроить, вам следует рассмотреть возможность использования XAMPP (Windows), MAMP (OS X) или AMPPS (Windows, OS X, Linux).

    Вместо этого используйте Nginx¶

    Если вам надоели махинации Apache, вы можете подумать о том, чтобы отказаться от них в в пользу Nginx. Nginx — высокопроизводительный веб-сервер, который на самом деле проще настроить, чем Apache.

    Предыдущий Запуск Bolt с использованием встроенного веб-сервера PHP

    Следующий Настройка сертификатов центра сертификации cURL SSL/TLS

    Почему вы не можете найти расположение файла .htaccess

    Файл .htaccess — это файл конфигурации для веб-серверов Apache. Редактируя этот файл, вы можете включать/отключать функции сервера , такие как перенаправление URL-адресов, защита паролем или ограничение доступа к определенным IP-адресам. Также возможно увеличение ресурсов вашего сервера и устранение ошибок . Для этого сначала вам нужно найти файл в корневом каталоге WordPress.

    Важно знать, что «.htaccess» — это не расширение файла, как .css или .js, а полное имя файла . Точка в начале («.») означает, что файл скрыт и не будет отображаться по умолчанию при просмотре некоторыми файловыми менеджерами или FTP-клиентами. Есть два возможных пути решения этой проблемы. Если файл существует на вашем сервере, вам нужно только включить соответствующие параметры в вашем FTP-клиенте, чтобы отобразить его. Если это не так, вам нужно создать новый и загрузить его на свой сервер через FTP.

    Посмотрим, как это сделать!

    Как показать скрытые файлы в вашем FTP-клиенте

    Наличие FTP-клиента является обязательным при работе сайта WordPress. Если вам нужно устранить проблему или добавить функциональные возможности, знание того, как использовать FTP-клиент и иметь доступ к файлам на сервере, весьма полезно . К счастью, существует множество доступных FTP-клиентов, как бесплатных, так и платных. Для целей этой статьи мы рассмотрим несколько популярных бесплатных FTP-клиентов и соответствующие параметры для отображения скрытых файлов в этих клиентах.

    FileZilla

    FileZilla — это удобное программное обеспечение, совместимое с Windows, macOS и Linux. Он поддерживает протоколы передачи FTP, FTPS и SFTP. Он включает в себя множество функций, включая быстрое редактирование файлов, постоянное соединение, а также возможность возобновить передачу файлов и создавать закладки. Тем не менее, вы должны быть очень осторожны с установкой рекламного ПО, которое может проникнуть в нежелательные программы через черный ход. Убедитесь, что вы внимательно прочитали параметры установки и сняли флажки со всех предлагаемых дополнительных программ.

    В FileZilla вы найдете параметр для отображения скрытых файлов, перейдя на вкладку Сервер и нажав « Принудительно показать скрытые файлы ».

    WinSCP

    WinSCP (Windows Secure Copy) — еще одно удобное программное обеспечение FTP , но оно доступно только для Windows . Он поддерживает FTP, SFTP, SCP, а также протоколы Amazon S3 и WebDAV. Среди многих функций он предлагает быстрое редактирование файлов и выбор редактора, 2 отдельных интерфейса, а также хранение и импорт информации о сеансе. Однако, хотя в целом он удобен для пользователя, неопытным пользователям может потребоваться некоторое время, чтобы привыкнуть к его интерфейсу.

    Чтобы найти файл .htaccess с помощью WinSCP , сначала необходимо подключиться к серверу, перейти на вкладку «Параметры» и нажать на параметр «Настройки» .

    Продолжите, щелкнув слева категорию Panels , установите флажок « Показать скрытые файлы » и нажмите « OK ».

    Cyberduck

    «Cyberduck — это бесплатный сервер и браузер облачного хранилища для Mac и Windows с поддержкой FTP, SFTP, WebDAV, Amazon S3, OpenStack Swift, Backblaze B2, Microsoft Azure и OneDrive, Google Drive и Dropbox».

    Его функции включают удаленное редактирование файлов, создание и импорт закладок и возобновление передачи файлов. Однако загрузка файла может занять некоторое время, а пользовательский интерфейс, по мнению большинства пользователей, не очень привлекателен.

    В Cyberduck вы найдете файл .htcaccess, перейдя на вкладку «Вид» и нажав « Показать скрытые файлы ».

    Free FTP

    Free FTP — это программное обеспечение FTP, созданное специально для новых пользователей . Он поддерживает FTP, FTPS, SFTP и HTTPS, но только для Windows. Его функции включают закладок, удаленное редактирование и историю FTP . Из 4 FTP-клиентов, упомянутых в этой статье, только у него есть платная версия, открывающая множество дополнительных функций.

    В Free FTP вы найдете файл .htaccess, перейдя на вкладку «Просмотр» и нажав «Показать скрытые файлы».

    Создание файла .htaccess

    Если вы по-прежнему не видите файл .htaccess, скорее всего, этот файл не существует и его необходимо создать . Вы можете сделать это автоматически или вручную.

    Сохранение постоянных ссылок

    Среди прочего, файл .htaccess обрабатывает отображение постоянных ссылок сайта . Это означает, что файл .htaccess по умолчанию создается при первом сохранении настроек постоянной ссылки. Поэтому вы, скорее всего, пропустили это и, выполнив эти шаги, создадите новый файл .htaccess.

    Перейдите к Настройки > Постоянные ссылки и нажмите кнопку « Сохранить изменения » в левом нижнем углу.

    Если это не решило проблему, и вы видите уведомление о том, что ваш файл .htaccess «не доступен для записи», скорее всего, это проблема с правами доступа к файлам/папкам. В этом случае переходите ко второму варианту.

    Создание вручную

    Файл . htaccess можно создать вручную, открыв новый файл в текстовом редакторе по вашему выбору и вставив следующий код. 9индекс\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Правило перезаписи. /index.php [Л] # END WordPress

    Затем сохраните файл как « .htaccess » где-нибудь на рабочем столе.

    Подключитесь к своему серверу, используя свои учетные данные FTP, и перейдите в родительский каталог вашего корневого каталога WordPress . Это папка, содержащая папку со всеми установочными файлами WordPress. Щелкните правой кнопкой мыши и нажмите «Атрибуты файла…» в появившемся меню .

    Вручную вставьте 755 и нажмите кнопку «ОК» .

    Затем перейдите в корневой каталог WordPress и перетащите ранее созданный файл, чтобы загрузить его.

    Наконечник . Предлагаемые разрешения для папок/каталогов должны быть либо 755, либо 750 . Для файлов значения должны быть 644 или 640 , а для файла wp-config.php установлено значение 440 или 400 .

    Убедитесь, что эти значения установлены правильно после решения проблемы с .htaccess, чтобы обеспечить безопасность вашего сайта.

    Темы Qode WordPress: лучший выбор

    Просмотр коллекции

    Bridge

    ТЕРИМАЛЬНАЯ Многоцелевая тема WordPress

    Стокгольм

    Действительно многоконцептная тема

    Startit

    Свежий стартап бизнес-тема

    Финальные мысли

    . Следующие. FTP-клиенты и выберите тот, который лучше всего подходит для вас. Держите его под рукой, потому что вам часто понадобится файл .htaccess и FTP-клиент в процессе устранения неполадок с многочисленными проблемами сайта WordPress.

    Apache Today - Apache Today: Использование файлов .htaccess с Apache

    Apache Today - Apache Today: Использование файлов .htaccess с Apache

    Оригинал в Apache Today (http://apachetoday. com).
    http://apachetoday.com/news_story.php3?ltsn=2000-07-19-002-01-NW-LF-SW


    Использование файлов .htaccess с Apache
    ( 19 июля, 16:07: 26 )

    Кен Коар
    Авторские права принадлежат Кену Коару, 2000 г. Все права защищены. Ограничено права, предоставленные Internet.Com.

    Одной из наиболее распространенных потребностей веб-мастеров является создание Веб-сервер для обработки всех документов в определенном каталоге или дерево каталогов таким же образом -- например, запрос пароля перед предоставлением доступа к любому файлу в каталоге или разрешением (или запрещающие) списки каталогов. Однако эта потребность часто распространяется не только веб-мастеру; рассмотреть студентов на факультете Веб-сервер в университете, или отдельные клиенты интернет-провайдера, или клиенты веб-хостинговой компании. В этой статье описывается, как веб-мастер может расширить разрешение, чтобы адаптировать поведение Apache к пользователей, что позволяет им иметь некоторый контроль над тем, как он обрабатывает свои собственные подобласти своего общего Web-пространства.

    В этой статье показано, как можно использовать конфигурацию для каждого каталога . файлы, называемые .htaccess файлы , для настройки поведение Apache — или разрешить пользователям делать это самостоятельно документы.

    Настройки для каждого каталога

    Система конфигурации Apache решает проблему группировки документов. по каталогу в прямом способ. Чтобы применить элементы управления к определенному дереву каталогов, для Например, вы можете использовать контейнер директива в конфигурационных файлах сервера:

     <Каталог "C:/Program Files/Apache Group/Apache/htdocs">
            Аллововеррайд
            Опции
        
       

    Преимущество этого заключается в сохранении контроля в руках веб-мастера; не нужно беспокоиться о том, что кто-либо из пользователей сервера сможет изменить настройки, так как файлы конфигурации сервера вообще не может быть изменено никем, кроме администратора. К сожалению, у него есть недостатки требующий перезапуска Apache каждый раз при изменении файла конфигурации, и что добавление всех контейнера, которые могут понадобиться для всех пользователей, у которых есть особые требования.

    Альтернативный метод обеспечения желаемой детализации Конфигурация Apache — вплоть до уровня каталога — заключается в использовании специальные файлы частичной конфигурации в каждом каталоге со специальными требования.

    Файл .htaccess — это просто текстовый файл, содержащий Апачи директивы. Эти директивы применяются к документам в каталоге, где Файл .htaccess расположен и во все подкаталоги под него же. Другие файлы .htaccess в подкаталогах может изменить или аннулировать эффекты тех, что находятся в родительских каталогах; видеть раздел о слиянии для получения дополнительной информации.

    В качестве текстовых файлов вы можете использовать любой текстовый редактор, который вам нравится создавать или внести изменения в файлы . htaccess .

    Эти файлы называются «файлы .htaccess », потому что они как они обычно называются. Эта схема именования уходит своими корнями в веб-сервер NCSA и файловая система Unix; файлы, имена которых начинаются с точки, часто считаются «скрытыми» и не отображается в обычном списке каталогов. Разработчики NCSA выбрал имя .htaccess ' чтобы управляющий файл в каталоге будет иметь довольно разумное имя («ht» для «гипертекст») и не загромождать списки каталогов. Плюс, есть долгая история утилит Unix, хранящих информацию о своих предпочтениях в таких «скрытых» файлах.

    Однако имя « .htaccess » не является общеприемлемым. Иногда может быть довольно сложно убедить систему разрешить вам создавать или отредактируйте файл с таким именем. По этой причине вы можете изменить имя, которое Apache будет использовать при поиске этих каталогов конфигурационные файлы с помощью AccessFileName в вашем сервер httpd. conf файл. Например,

     AccessFileName ht.acl
       

    заставит Apache искать файлы с именем ht.acl вместо этого .htaccess . Однако к ним будут относиться так же, и они по-прежнему называются «файлы .htaccess » для удобство.

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

    Каждый раз, когда обход каталога находит новый набор директив, которые применяются на просьбу они слили с настройками уже накоплено. Результатом является набор настроек, которые применяются к окончательный документ, отобранный из всех его предков каталогов и конфигурационные файлы сервера.

    При поиске файлов .htaccess Apache запускается с вершина файловой системы. (В Windows это обычно означает « C:\»; в противном случае — корневой каталог «/».) Затем он проходит по каталоги к каталогу, содержащему окончательный документ, обработку и слияние любые файлы .htaccess , которые, как говорят файлы конфигурации, должны обрабатываться. (См. раздел о переопределениях для получения дополнительной информации о том, как сервер определяет, является ли .htaccess файл должен быть обработан или нет.)

    Это может быть интенсивным процессом. Рассмотрим запрос на который разрешается в файл

     C:\Program Files\Apache Group\Apache\htdocs\foo\bar\gritch\x.html
       

    Если не указано иное, Apache будет искать каждый из следующие файлы .htaccess и обработайте все, что он найдет:

    1. C:\.htaccess
    2. C:\Program Files\. htaccess
    3. C:\Program Files\Apache Group\.htaccess
    4. C:\Program Files\Apache Group\Apache\.htaccess
    5. C:\Program Files\Apache Group\Apache\htdocs\.htaccess
    6. C:\Program Files\Apache Group\Apache\htdocs\foo\.htaccess
    7. C:\Program Files\Apache Group\Apache\htdocs\foo\bar\.htaccess
    8. C:\Program Files\Apache Group\Apache\htdocs\foo\bar\gritch\.htaccess

    Это много работы, чтобы вернуть один файл! И сервер будет повторяйте этот процесс каждый раз, когда запрашивается файл. Видеть раздел overrides для способа уменьшить это накладные расходы с Аллововеррайднет директива.

    Поскольку файлов .htaccess оцениваются для каждого запроса, вам не нужно перезагружать сервер Apache всякий раз, когда вы делаете сдача. Это делает их особенно подходящими для окружающей среды. с несколькими группами или отдельными лицами, использующими один веб-сервер система; если веб-мастер разрешает, он может осуществлять контроль над свои собственные области, не принуждая веб-мастера перезагрузить Apache с каждым изменением. Кроме того, если есть синтаксическая ошибка в .htaccess , это влияет только на часть веб-пространство сервера, вместо того, чтобы удерживать сервер от вообще не работает (что и произошло бы, если бы ошибка была в конфигурационных файлах сервера).

    Не все директивы будут работать в файлах .htaccess ; Например, нет смысла разрешать появление директивы ServerName в одном, так как сервер уже запущен и знает его имя -- и не может изменить его -- к тому времени, когда запрос вызовет Файл .htaccess для чтения. Другие директивы не разрешено, потому что они имеют дело с функциями, которые являются общесерверными, или, возможно, слишком чувствительны.

    Однако большинство директив разрешены в .htaccess . файлы. Если вы не уверены, взгляните на документацию директивы. Рисунок 1 представляет собой образец, извлеченный из документации Apache. Вы можете посмотрите, где текст говорит « Context », что . htaccess перечислены; это означает, что эта директива может использоваться в каждом каталоге файлы конфигурации.

    Директива

    SetEnvIf

    Синтаксис: SetEnvIf атрибут регулярное выражение envar[=значение] [...]
    По умолчанию: нет
    Контекст: конфигурация сервера, виртуальный хост, каталог, .htaccess
    Переопределение: FileInfo
    Статус: База
    Модуль: mod_setenvif
    Совместимость: Apache 1.3 и выше; в Сопоставление ключевого слова Request_Protocol и переменной среды только доступно с 1.3.7 и выше; поддерживается только в файлах .htaccess с 1.3.13 и выше

    Рисунок 1: Директивная документация

    Однако обратите внимание, что есть дополнительная информация о совместимости . линия; в нем говорится, что эта директива может использоваться только в .htaccess файлы, если вы используете Apache версии 1.3.13 или потом.

    Если вы попытаетесь включить директиву в .htaccess файл, который там не разрешен, любые запросы на документы под этот каталог приведет к ошибке « 500ServerError ». страницу ошибки и сообщение в журнале ошибок сервера.

    Если ваш файл .htaccess содержит директивы, которые не охватываются текущим набором категорий переопределения, они не будут вызвать ошибку — сервер их просто проигнорирует. Так что ваши файл может содержать директивы в любой или во всех категориях, и только те, которые относятся к категориям, перечисленным в Аллововеррайд список будет обработан. Все остальные будут проверяться на синтаксис, но иначе не интерпретируется.

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

    Пять категорий директив:

    Аутконфиг
    Эта категория предназначена для контроля директивы, связанные с безопасностью веб-страницы, такие как AuthName , Удовлетворить и Требовать директивы. Это самая распространенная категория, которая позволяет быть переопределено, так как позволяет пользователям защищать свои собственные документы.
    Информация о файле
    Директивы, управляющие обработкой файлов,
    Индексы
    Директивы, влияющие на списки файлов, должны находиться в этом категория. Он включает IndexOptions , AddDescription и DirectoryIndex , Например.
    Ограничение
    Эта категория аналогична категории AuthConfig . в том, что директивы, которые он охватывает, обычно связаны с безопасность. Тем не менее, они обычно включают непроизвольный элементы управления, такие как управление доступом по IP-адресу. Директивы этой категории включают Приказ , Разрешить и Запретить .
    Опции
    Категория Options предназначена для директив которые поддерживают различные параметры, такие как ContentDigest , XBitHack и Опции самого .

    Специальная директива, которую можно использовать только на уровне сервера. файлы конфигурации, определяющие, какие категории могут быть переопределены в любом конкретном дереве каталогов. Директива AllowOverride принимает два специальных ключевые слова в дополнение к названиям категорий, перечисленным выше:

    Все
    Это сокращенный способ перечисления всех категории; два приведенных ниже утверждения эквивалентны:
     AllowOverride AuthConfig FileInfo Индексы Ограничения Параметры
        Разрешить переопределить все
         
    Нет
    Это ключевое слово полностью отключает обработку . htaccess файлы для указанного каталога и его потомки (если только другой AllowOverride директива для подкаталога определяется в файлах конфигурации сервера). «Отключено» означает, что Apache не будет даже искать для .htaccess файлы, не говоря уже об их обработке. Этот может привести к экономии производительности, и именно поэтому default Файл httpd.conf включает такой директива для системного каталога верхнего уровня. .htaccess обработка отключена для всех каталоги по умолчанию этой директивой и только выборочно включается для тех деревьев, где это делает смысл.

    Как показано выше, директива AllowOverride принимает разделенный пробелами список названий категорий в качестве аргумента.

    Разрешив использование файлов .htaccess в пользовательских (или клиент или клиент) каталоги, вы, по сути, расширяете часть ваших привилегий веб-мастера всем, кто может редактировать эти файлы. Поэтому, если вы решите сделать это, вам следует подумать время от времени выполняя аудит, чтобы убедиться, что файлы должным образом защищены - и, если вы действительно амбициозны, что они содержат только те настройки, которые вы одобряете.

    Из-за очень грубой детализации возможного переопределения категории, вполне возможно, что, предоставив пользователю возможность переопределить один набор директив, которые вы непреднамеренно делегировать больше власти, чем вы ожидаете. Например, вы можете включить " AllowOverrideFileInfo " директива для пользовательских каталогов, чтобы люди могли использовать Директива AddType для маркировки документов с помощью MIME типы, которых нет в общем списке сервера, но знали ли вы, когда вы сделали это, вы также предоставили им доступ к Псевдоним , Заголовок , Действие и Также переписать* директивы ? Директивы связанные с категориями переопределения в модуле на основе, поэтому отслеживание того, что разрешено, путем разрешения определенного категория переопределения может быть утомительным процессом.

    Окончательный ответ на то, какие директивы в каких категориях находятся исходный код. Если вы действительно хотите знать, изучите источник для следующих строк:

    Строка Соответствующий AllowOverride Ключевое слово
    OR_AUTHCFG Аллововеррайд Аутконфиг
    OR_FILEINFO Аллововеррайд FileInfo
    OR_INDEXES Индексы AllowOverride
    OR_LIMIT Предел Аллововеррайд
    OR_OPTIONS Параметры Аллововеррайд

    (См. предыдущий раздел для описания того, что означают различные категории переопределения.)

    Как видите, за исключением ключевых слов AuthConfig/AUTHCFG, исходные ключевые слова идентичны ключевым словам директивы. Этот удобно!

    Прежде чем включать файлы .htaccess , обратите внимание на преимущества и недостатки. На серверах запускаю сам, с нет пользователей, я предпочитаю .htaccess файлы для тестирование и отладка, и когда у меня есть конфигурация, я например, я перемещаю директивы в контейнер в файле httpd.conf и удалите Файл .htaccess . По этой причине у меня есть переопределения включены практически везде. Это позволяет мне сбалансировать удобство файлов .htaccess против их влияние на производительность.

    На некоторых моих серверах у меня есть учетные записи пользователей для людей Я знаю и доверяю, и в таких условиях я больше осторожны и не разрешайте все переопределения глобально. я до склонны позволять тому, что важнее моих друзей для их собственные каталоги, однако.

    И в некоторых случаях у меня есть настоящие «пользовательские» учетные записи, для людей, которых я , а не тоже знают -- и на этих серверах AllowOverrideNone — это правило. я иногда разрешать файлы .htaccess в своих частные каталоги, но я тщательно проверяю возможные эффекты перед присвоением категории переопределения.

    Два основных недостатка использования .htaccess влияние на производительность и расширение контроля доступ к др. С первым в некоторой степени можно справиться разумное использование AllowOverride директива, а последняя является вопросом установления доверия -- и проведение оценки рисков. Какая смесь работает лучше всего в вашем среда - это то, что вам нужно определить для самим собой.

    Вот некоторые из наиболее распространенных проблем, которые я видел у людей. (или был сам) с .htaccess файлов. Одна вещь, которую я Однако сначала следует подчеркнуть: журнал ошибок сервера - ваш друг. Вы всегда должны обращаться к журналу ошибок, когда кажется, что что-то не так. правильно функционировать. Если это ничего не говорит о вашем проблема, попробуйте повысить детализацию сообщения, изменив Директива LogLevel для отладки . (Или же добавление строки LogLeveldebug , которой у вас нет LogLevel уже ).

    Страница «Внутренняя ошибка сервера» отображается, когда документ запрос
    Это указывает на проблему с вашей конфигурацией. Проверить Файл журнала ошибок Apache для более подробного объяснения того, что пошло не так. Вероятно, вы использовали запрещенную директиву. в файлах .htaccess или иметь директиву с некорректным синтаксис.
    Файл .htaccess , похоже, ничего не меняет
    Возможно, каталог находится в области Директива AllowOverrideNone . Попробуйте поставить строку тарабарщины в файле .htaccess и принудительно перезагрузить страницы. Если вы по-прежнему получаете ту же страницу вместо " Internal Server Error ", то это, вероятно, причина проблемы. Другая небольшая возможность заключается в том, что документ который вы запрашиваете, на самом деле не контролируется . htaccess файл, который вы редактируете; это может иногда происходить, если вы получаете доступ документ с общим именем, например index.html . Если есть вероятность этого, попробуйте изменить фактический документ и повторный запрос, чтобы убедиться, что вы видите изменение. этого не происходит.
    Я добавил несколько директив безопасности в свой .htaccess файл, но у меня не запрашивается имя пользователя и пароль
    Наиболее распространенной причиной этого является наличие файла .htaccess . директивы в рамках SatisfyAny директива. Явно отключите это, добавив SatisfyAll в файл .htaccess , и попробуй еще раз.

    После того, как вы запустили и запустили веб-сервер Apache, первый препятствие было преодолено. Теперь можно переходить к изучению его возможности и особенности. Вот несколько ссылок на ресурсы для дальнейшего расследования:

    • Основной веб-сайт Apache, конечно же: http://www. apache.org/>
    • Документация для Apache и его модулей: http://www.apache.org/docs/>
    • Каноническая страница ответа по электронной почте: http://www.apache.org/foundation/preFAQ.html>
      ( Эта страница обычно используется для ответов на запросы по электронной почте о поддержку, но есть лотов хороших ресурсов, перечисленных на Это. )

    Apache предоставляет два основных способа управления своим поведением на на уровень каталога : контейнеры в общесерверных файлах конфигурации и .htaccess файлы в каждом каталоге, где они необходимы. Каждый метод имеет свой преимущества и его недостатки; вам, как веб-мастеру, необходимо сбалансировать их друг с другом, чтобы решить, какое сочетание методы лучше всего подходят для вашей среды.

    Если вы делаете решите разрешить использование .htaccess файлы, обязательно ограничьте их соответствующими областями и улучшите вашей производительности с помощью AllowOverrideNone в другом месте.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *