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

Обновлено: 21.11.2024

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

Некоторые веб-сайты временно сохранят устаревшую поддержку .htaccess. Узнайте больше здесь.

Что такое файл .htaccess и почему он устарел?

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

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

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

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

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

Некоторые веб-сайты временно сохранят устаревшую поддержку .htaccess. Узнайте больше здесь.

Директивы WordPress .htaccess по умолчанию

Согласно нашему анализу, большинству веб-сайтов WP Engine не потребуется никаких дополнительных изменений в .htaccess, поскольку они используют версию этого файла WordPress по умолчанию.

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

Вордпресс по умолчанию .htaccess

Многосайтовый субдомен .htaccess

Подкаталог Multisite .htaccess

Директивы и альтернативы

Если на вашем сайте используются директивы .htaccess, выходящие за рамки правил WordPress по умолчанию (см. выше), мы составили список рекомендуемых альтернатив.

  • По умолчанию файлы PHP защищены на уровне платформы, что предотвращает их обслуживание. Другие статические файлы обслуживаются Nginx, а не Apache.
  • При необходимости можно добавить правила Nginx для воспроизведения этого поведения, обратившись в службу поддержки.
  • Файлы PHP защищены на уровне платформы, что предотвращает их обслуживание. Другие статические файлы обслуживаются Nginx, а не Apache.
  • При необходимости можно добавить правила Nginx для воспроизведения этого поведения, обратившись в службу поддержки.
    . Перенаправления пользовательского портала лучше для производительности и масштабируемости. с пользовательскими перезаписями Nginx, если это необходимо.
  • Используйте плагин.
  • Нет
  • Статические ресурсы обслуживаются Nginx, а не Apache (где будет обрабатываться .htaccess).
  • Нет
  • По умолчанию WP Engine уже запрещает индексирование каталогов.
  • Заголовки следует отправлять с кодом PHP.
  • Статические ресурсы обслуживаются Nginx, а не Apache (где будет обрабатываться .htaccess).
  • Если нужны дополнительные правила, их можно добавить в конфигурацию Nginx, обратившись в службу поддержки.
  • По умолчанию WP Engine управляет правилами кэширования на уровне сервера.
  • Дополнительными правилами кэширования можно управлять в коде PHP.
  • Дополнительные правила кэширования для статических ресурсов можно применить к Nginx, обратившись в службу поддержки.
  • Подключаемые модули WordPress часто добавляют правила безопасности в файл .htaccess.WP Engine уже применяет эти правила по умолчанию на уровне сервера.
  • Плагины должны обрабатывать дополнительные директивы в своем PHP-коде.

Обработка перенаправлений 301 и 302

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

Менее 1000 переадресаций

  • Перенаправления можно добавить в конфигурацию Nginx WP Engine
  • Массовый импорт перенаправлений, обратившись в службу поддержки WP Engine

Более 1000 переадресаций

  • Импорт перенаправлений в конфигурацию WP Engine Nginx будет неэффективен при таком количестве из-за раздувания и накладных расходов.
  • Мы рекомендуем загружать перенаправления в подключаемый модуль Redirection или, если вы используете Yoast SEO, управлять перенаправлениями в Yoast Premium.

Массовый перенос перенаправлений из файла .htaccess

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

Веб-правила

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

Эта страница позволяет блокировать/разрешать IP-адреса, ограничивать трафик на основе заголовка или управлять трафиком по типу запроса. Все веб-сайты на WP Engine автоматически включают эту страницу веб-правил.

Устаревшие обновления

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

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

  • Включение веб-правил отключает поддержку .htaccess.
  • Включение поддержки .htaccess отключает все веб-правила.
  • Для устранения неполадок можно одновременно отключить как веб-правила, так и поддержку .htaccess.

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

Мы рекомендуем перенести правила из .htaccess на страницу веб-правил как можно скорее.

Найдите ответы, руководства и учебные пособия, чтобы повысить эффективность доставки контента.

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

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

Распространенные проблемы с .htaccess

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

.htaccess должен быть включен с помощью AllowOverride

Имя файла написано с ошибкой или не начинается с точки

Если вы создаете файл .htaccess с нуля (т. е. вы не используете CMS, которая поставляется с включенным файлом .htaccess), вы должны убедиться, что имя файла правильное и начинается с точки ( . ). Без точки в начале Apache проигнорирует файл — то же самое, если файл написан с ошибкой. Кроме того, дважды проверьте, чтобы имя файла было в нижнем регистре. Ваш файл .htaccess должен называться точно так же, как .htaccess .

Расположение ваших правил должно быть выше или ниже других

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

Конфликтующие файлы .htaccess

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

Используется неправильный синтаксис

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

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

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

Использование валидатора .htaccess

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

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

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

Проверка журнала ошибок Apache

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

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

В этом случае Apache выдает следующую ошибку:

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

Отладка с помощью файла конфигурации Apache

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

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

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

Отладка mod_rewrite с журналами

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

В приведенном выше фрагменте будут зарегистрированы все ошибки mod_rewrite вплоть до уровня "alert" в вашем файле error.log. Ознакомьтесь с директивой уровня журнала Apache, чтобы узнать больше. Следует отметить, что чем выше уровень журнала трассировки, который вы задаете, тем медленнее будет работать ваш веб-сервер Apache.

Обзор

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

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

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

Вы можете создать файл .htaccess в текстовом редакторе (убедитесь, что он называется только .htaccess без какого-либо другого расширения или имени), а затем загрузить его на свой сайт через ftp-клиент.

Кроме того, важно расположение файла .htaccess. Конфигурации в этом файле повлияют на все в его каталоге и каталогах под ним.

Что нужно знать

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

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

Второе: безопасность — файл .htaccess гораздо более доступен, чем стандартная конфигурация Apache, и изменения вступают в силу мгновенно (без необходимости перезапуска сервера). Предоставление пользователям разрешения на внесение изменений в файл .htaccess дает им большой контроль над самим сервером. Любая директива, размещенная в файле .htaccess, имеет тот же эффект, что и в самой конфигурации apache.

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

Покончив с этим, давайте перейдем к информации .htaccess.

Как активировать файл .htaccess

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

Оказавшись внутри этого файла, найдите следующий раздел и измените строку с надписью AllowOverride с None на All. Теперь раздел должен выглядеть так:

После сохранения и выхода из этого файла перезапустите apache.

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

Вы можете создать файл .htaccess в текстовом редакторе (убедитесь, что он называется только .htaccess без какого-либо другого расширения или имени), а затем загрузить его на свой сайт через ftp-клиент.

Пять распространенных вариантов использования страницы .htaccess

<р>1. Mod_Rewrite: одним из наиболее полезных аспектов файла .htaccess является mod_rewrite. Вы можете использовать пространство в файле .htaccess, чтобы указать и изменить способ отображения URL-адресов и веб-страниц на ваших сайтах для ваших пользователей. Полное руководство о том, как это сделать, можно найти здесь.

<р>2. Аутентификация: хотя использование файла .htaccess не требует столько разрешений, сколько потребовалось бы для доступа к файлу apache2.conf, мы все же можем вносить эффективные изменения на сайт. После такого изменения требуется пароль для доступа к определенным разделам веб-страницы.

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

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

Вы можете использовать этот полезный сайт для создания пары имени пользователя и зашифрованного пароля. Если имя пользователя вашего авторизованного пользователя — jsmith, а пароль — «awesome», пара будет выглядеть так: jsmith:VtweQU73iyETM. Вы можете вставить столько строк, сколько необходимо, в файл .htpasswd, но убедитесь, что каждый пользователь получает свою собственную строку.

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

  • 400 Неверный запрос
  • 401 Требуется авторизация
  • 403 Запрещенная страница
  • Файл ошибки 404 не найден
  • Внутренняя ошибка 500

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

В этом руководстве я собираюсь создать страницу 404. Однако вы можете заменить эту ошибку чем угодно:

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

Имейте в виду, что Apache ищет страницу 404, расположенную в корне сайта. Если вы разместили новую страницу с ошибкой в ​​более глубоком подкаталоге, вам нужно включить ее в строку, чтобы она выглядела примерно так:

<р>4. Типы MIME. Если на вашем сайте есть файлы приложений, для доставки которых ваш сервер не настроен, вы можете добавить типы MIME на сервер Apache в файле .htaccess с помощью следующего кода.

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

<р>5. SSI: включения на стороне сервера значительно экономят время на веб-сайте. Одним из наиболее распространенных способов использования SSI является обновление большого количества страниц некоторыми специфическими данными без необходимости обновления каждой страницы по отдельности (например, если вы хотите изменить цитату внизу страницы).

Чтобы включить SSI, введите следующий код в файл .htaccess.

Эти три строки сообщают .htaccess, что файлы .shtml допустимы, а вторая строка заставляет сервер анализировать все файлы, оканчивающиеся на .shtml, для любых команд SSI.

Однако, если у вас есть много страниц .html, которые вы не хотите переименовывать с расширениями .shtml, вы можете использовать другую тактику для их анализа на наличие команд SSI — XBitHack.

Добавление этой строки в файл .htaccess заставляет Apache проверять все файлы html с соответствующими разрешениями для включения на стороне сервера.

Чтобы сделать страницу подходящей для XBitHack, используйте эту команду:

Подробнее

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Файлы .htaccess позволяют вносить изменения в конфигурацию для каждого каталога.

  • Файлы .htaccess
  • Что это такое/как их использовать
  • Когда (не) использовать файлы .htaccess
  • Как применяются директивы
  • Пример аутентификации
  • Пример включения на стороне сервера
  • Переписать правила в файлах .htaccess
  • Пример компьютерной графики
  • Устранение неполадок

См. также

файлы .htaccess

Что это такое/Как их использовать

Файлы .htaccess (или «распределенные файлы конфигурации») позволяют вносить изменения в конфигурацию для каждого каталога. Файл, содержащий одну или несколько директив конфигурации, помещается в определенный каталог документов, и директивы применяются к этому каталогу и всем его подкаталогам.

Если вы хотите назвать свой файл .htaccess как-то иначе, вы можете изменить имя файла с помощью директивы AccessFileName. Например, если вы предпочитаете называть файл .config, вы можете поместить в файл конфигурации вашего сервера следующее:

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

Например, если вы посмотрите документацию по директиве AddDefaultCharset, вы обнаружите, что она разрешена в файлах .htaccess. (См. строку Context в сводке директив.) Строка Override читается как FileInfo. Таким образом, вы должны иметь как минимум AllowOverride FileInfo, чтобы эта директива соблюдалась в файлах .htaccess.

Пример:

Контекст: конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределение: Информация о файле

Если вы не уверены, разрешена ли конкретная директива в файле .htaccess, просмотрите документацию по этой директиве и проверьте строку Context на наличие ".htaccess".

Когда (не) использовать файлы .htaccess

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

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

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

Есть две основные причины избегать использования файлов .htaccess.

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

Итак, для каждого доступа к файлу из этого каталога есть 4 дополнительных доступа к файловой системе, даже если ни один из этих файлов не присутствует. (Обратите внимание, что это будет иметь место только в том случае, если файлы .htaccess включены для / , что обычно не так.)

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

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

Обратите внимание, что это полностью эквивалентно размещению файла .htaccess в каталоге /www/htdocs/example, содержащем директиву, и размещению этой же директивы в разделе каталога в конфигурации вашего основного сервера:

Файл .htaccess в /www/htdocs/example :

Содержимое файла .htaccess в /www/htdocs/example

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

Как применяются директивы

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

В каталоге /www/htdocs/example1 у нас есть файл .htaccess, содержащий следующее:

(Примечание. Чтобы разрешить использование директивы "Options" в файлах .htaccess, у вас должны быть активированы "AllowOverride Options".)

В каталоге /www/htdocs/example1/example2 у нас есть файл .htaccess, содержащий:

Из-за этого второго файла .htaccess в каталоге /www/htdocs/example1/example2 выполнение CGI не разрешено, так как действует только параметр «Включает параметры», который полностью переопределяет любые более ранние настройки, которые могли быть на месте.

Объединение .htaccess с основными файлами конфигурации

Пример аутентификации

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

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

Содержимое файла .htaccess:

Обратите внимание, что для того, чтобы эти директивы имели какой-либо эффект, должен быть активирован параметр AllowOverride AuthConfig.

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

Пример включения на стороне сервера

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

Обратите внимание, что параметры AllowOverride и AllowOverride FileInfo должны быть активны, чтобы эти директивы имели какой-либо эффект.

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

Переписать правила в файлах .htaccess

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

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

Дополнительные сведения об использовании mod_rewrite см. в документации по mod_rewrite .

Пример компьютерной графики

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

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

Обратите внимание, что параметры AllowOverride и AllowOverride FileInfo должны быть активны, чтобы эти директивы имели какой-либо эффект.

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

Устранение неполадок

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

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

[Пятница, 17 сентября, 18:43:16 2010] [предупреждение] [клиент 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex здесь запрещен

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

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

[Сб, 09 августа, 16:22:34 2008] [предупреждение] [клиент 192.168.200.51] /var/www/html/.htaccess: RewriteCond: неверные разделители флагов

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

Комментарии

Авторское право 2022 г. The Apache Software Foundation.
Под лицензией Apache License, версия 2.0.

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

В этом руководстве показано, как настроить и включить htaccess в Apache. Кроме того, в нем рассказывается, как ограничить доступ к определенным локализациям на сервере, управлять IP-адресами и перенаправлять трафик.

Примечание. Если в вашей системе нет Apache, вы можете найти пошаговое руководство по установке Apache в Ubuntu.

  • Рабочий веб-сервер Apache
  • Доступ к окну терминала/командной строке
  • Доступ к учетной записи пользователя с правами sudo
  • Текстовый редактор, например Nano, включенный по умолчанию

Шаг 1. Включите Apache .htaccess

По умолчанию файл .htaccess не включен.

<р>1. Откройте файл конфигурации хоста по умолчанию, введя в терминале следующую команду:

<р>2. Найдите раздел с пометкой .
В этом разделе измените запись AllowOverride None на all:

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

Ширина

Сохраните файл и выйдите.

<р>3. Затем перезапустите службу Apache:

Шаг 2. Создайте .файл htaccess

Как и большинство программных пакетов Linux, Apache работает с файлами конфигурации. Файл .htaccess — один из них. Он работает, указывая параметр вместе со значением.

Чтобы создать и открыть файл .htaccess для редактирования, введите:

Замените my_website названием вашего фактического веб-сайта. Если этот файл не существует, ваш текстовый редактор создаст его.

Шаг 3. Ограничьте списки каталогов

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

<р>1. Начните с создания нового файла .htpasswd в другом каталоге:

Введите имя пользователя и пароль для каждого пользователя, которого вы хотите создать. Обязательно используйте надежные пароли и вводите только одну пару имя пользователя/пароль в строке.

Сохраните файл и выйдите.

<р>2. Затем отредактируйте .htaccess, чтобы включить аутентификацию:

Замените /user/safe_location/htpasswd на местоположение по вашему выбору. Из соображений безопасности не храните его в том же каталоге, что и ваш веб-контент.

AuthUserFile — устанавливает местоположение для вашего файла .htpasswd.

AuthGroupFile — мы не используем группу, поэтому это заполнитель.

AuthName — это подсказка для пользователя — вы можете перефразировать, если хотите.

AuthType — тип используемой аутентификации — не меняйте его.

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

Управление IP-адресами

Существует множество способов управления IP-адресами:

  1. Разрешить только определенные IP-адреса.
  2. Блокировать определенные IP-адреса.
  3. Блокировать посетителей по рефереру.

Разрешить IP-адреса

Чтобы разрешить IP-адреса, вы можете изменить поведение, чтобы разрешить несколько назначенных IP-адресов и заблокировать остальные.

Введите команды:

Блокировать IP-адреса

Чтобы заблокировать IP-адреса в htaccess, введите: разрешить, запретить

Чтобы заблокировать один IP-адрес, введите следующий код: deny from 192.168.0.54

Если вы опустите последнюю цифру, будут заблокированы все IP-адреса в диапазоне от 0 до 255:

Например: запретить с 192.168.0

Блокировка посетителей по рефереру

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

Откройте файл .htaccess и добавьте следующий блок:

Если вы хотите добавить больше доменов, обратите внимание на следующее:

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

Перенаправить трафик

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

Откройте файл и введите следующее:

Установить страницу 404

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

<р>1. Откройте файл .htaccess и введите:

Эта строка указывает системе искать в каталоге содержимого веб-сайта файл /404.html в качестве страницы с ошибкой.

<р>2. Создайте страницу 404 с помощью этой команды:

Это должно открыть файл 404.html в вашем текстовом редакторе.

<р>3. Затем добавьте следующий код:

Теперь эту страницу можно настроить для отображения любого сообщения об ошибке. Вы также можете настроить любые другие страницы ошибок по своему усмотрению. Просто укажите номер ErrorDocument, например, Error 500, а затем укажите .htaccess на новый файл error.html, который вы создаете.

Включение .htaccess может оказаться невероятно ценным инструментом для управления веб-сервером Apache.

В этом руководстве представлены основные команды и настройки, а также некоторые наиболее вероятные сценарии, с которыми вы можете столкнуться.

Читайте также: