- Проблемы с .htaccess
- У меня нет файла .htaccess, что делать?
- В cPanel не видно файла .htaccess
- Как включить mod rewrite
- .htaccess не работает apache
- Конфигурационный файл .htaccess
- Содержание
- Что такое .htaccess и для чего он нужен
- Как создать файл .htaccess
- Синтаксис .htaccess
- Возможности .htaccess
- Контроль доступа
- Работа с ошибками веб-сервера
- Настройка 301 редиректа в htaccess
- Модуль перенаправления mod_rewrite
- Определение кодировки
- Другие возможности
- Если .htaccess не работает
- И еще несколько советов по работе с .htaccess
- Полезные ссылки
Проблемы с .htaccess
Подробнее о файле .htaccess читайте в статье: Что такое .htaccess?
Поддержка файла «.htaccess» есть только на hosting Linux. На Windows хостинге функцию «.htaccess» выполняет файл web.config.
Модуль поддержки «.htaccess» доступен на всех тарифах виртуального хостинга на основе ОС Linux. Если при установке CMS появляется сообщение об отсутствии поддержки «.htaccess» просто проигнорируйте его.
У меня нет файла .htaccess, что делать?
Если вы настраиваете web-сервер Apache, но у вас нет файла .htaccess, создайте его и пропишите нужные директивы.
Чтобы создать .htaccess, войдите в панель управления хостингом по инструкции: Как войти в панель управления хостингом? Расположите файл .htaccess в каталоге сайта с помощью статьи: В какой каталог нужно загружать файлы моего сайта?.
Если вы случайно удалили файл .htaccess, восстановите его через бэкап. Или добавить стандартный файл .htaccess для вашей CMS: Файлы .htaccess для популярных CMS
В cPanel не видно файла .htaccess
Чтобы увидеть скрытые файлы (начинающиеся с точки) в хостинг панели cPanel, необходимо выполнить следующие действия:
Перейдите в раздел Диспетчер файлов:
В правом верхнем углу нажмите на кнопку Параметры:
Установите галочку Показывать скрытые файлы (dotfiles) и сохраните изменения нажав на Save:
Как включить mod rewrite
Модуль «mod_rewrite» присутствует на всех тарифных планах хостинга Linux. Чтобы активировать «mod_rewrite» добавьте в файл .htaccess строку вида:
Источник
.htaccess не работает apache
У меня есть сервер из сервиса AWS EC2, работающий в Linux Ubuntu, и я установил apache, php и mysql.
Я добавил .htaccess файл в корень моего документа /var/www/html .
Я ввел этот код в нем: ErrorDocument 404 /var/www/html/404.php и он до сих пор не появляется.
Я продолжал вводить эту команду несколько раз: sudo service httpd restart перезагрузить сервер, но без изменений .
Как я могу это исправить . Я сделал что-то не так?
Во-первых, обратите внимание, что перезапуск 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 Server, когда вы укажете браузеру на каталог, содержащий этот файл. Если это не так, то у вас не настроен AllowOverride правильно.
Источник
Конфигурационный файл .htaccess
Начнем издалека, чтобы и новичкам был понятен принцип работы описываемого в статье файла. Для функционирования сайта в Интернете нужен не только компьютер и выход к сети, но и установленное на него специальное ПО, которое обеспечивает доступ к данным по протоколам http и https. Таким программным обеспечением и является веб-сервер. Существуют различные типы веб-серверов, но самый распространенный — Apache. Он построен на открытом коде, предоставляется бесплатно, постоянно дорабатывается и улучшается, совместим с многими скриптами и работает почти на всех платформах, включая Windows, Linux, Netware 5.x.
Настраивается Apache через конфигурационные файлы, которые хранятся в текстовом формате. С их помощью можно задать определенные правила действия веб-сервера. Главный конфигурационный файл называется httpd.conf или apache.conf (в зависимости от дистрибутива ОС). Во многих случаях все конфигурации сервера можно указывать именно здесь, и в основном такой способ предпочтительней, потому что:
а) уменьшает время ответа веб-сервера при запросе (так при каждом обращении к веб-серверу Apache не будет просматривать все каталоги на наличие .htaccess); б) некоторые директивы, например директивы модуля mod_rewrite, во многих отношениях работают лучше из главного конфигурационного файла.
Но доступ к этому файлу может быть не у всех пользователей сервера (например, в случае с виртуальным хостингом), поэтому остальным предлагается файл дополнительной конфигурации веб-сервера — .htaccess (c точкой в начале названия).
Содержание
Что такое .htaccess и для чего он нужен
Файл (или файлы) .htaccess будет задавать правила работы веб-сервера только в каталоге, где он размещен, и его дочерних каталогах, без глобальных изменений работы всего сервера. Возможность использовать .htaccess прописывается директивой (т.е. командой) AllowOverride в главном конфигурационном файле httpd.conf, название которой прямо говорит о том, что настройки внутри .htaccess приоритетны перед настройками в httpd.conf (если иное не ограничено все той же директивой AllowOverride). С помощью этой директивы можно позволить все, а можно — только некоторые действия. Детальную инструкцию по его применению можно найти на сайте Apache.
С ней, при каждом обращении к веб-серверу, Apache будет просматривать все каталоги на наличие .htaccess. Изменения в файле действительны сразу после сохранения — перезагрузка всего веб-сервера не нужна (в отличие от изменений в httpd.conf).
Имя файла .htaccess — общепринятое, но вовсе не обязательное. В httpd.conf можно задать другое имя с помощью директивы AccessFileName, например, так:
Как создать файл .htaccess
Как уже говорилось, конфигурационные файлы имеют текстовый формат, и создать .htaccess также можно с помощью текстового редактора (например, Блокнота или NotePad++ в Windows).
Имя файла — .htaccess (с точкой в начале);
формат переноса по словам;
режим ASCII (при загрузке .htaccess на хостинг по FTP-протоколу).
Apache — регистрозависимый веб-сервер, поэтому важно написать название маленькими буквами: .HTaccess и .htaccess — это разные файлы.
В Mac ОS файлы, начинающиеся с точки, невидимы. Поэтому вы можете назвать его иначе и после, переместив по FTP на хостинг, переименовать. Обычно размещают файл в корневой директории веб-сервера (/public_html) либо в корневой директории сайта (/public_html/site.com/).
Синтаксис .htaccess
Синтаксис .htaccess аналогичен синтаксису httpd.conf. Для каждой директивы предполагается отдельная строка. Для своего же удобства вы можете вносить в файл комментарии с помощью знака #, и значение после # будет игнорироваться веб-сервером. Этот трюк можно использовать для отключения любой директивы. Ее не нужно удалять полностью из файла – достаточно просто закомментировать.
Возможности конфигурационного файла огромны. Ниже приведены базовые настройки в .htaccess.
Возможности .htaccess
Контроль доступа
Запрет веб-доступа, кроме IP:
Запрет веб-доступа для IP:
Запрет доступа к файлу:
Защита директории с помощью пароля:
Работа с ошибками веб-сервера
Иногда вместо ожидаемой страницы посетитель может натолкнуться на ответ веб-сервера в виде ошибки с лаконичным, но не всегда понятным для простого пользователя объяснением причины. Полный список кодов состояния можно найти в Википедии. Для самых распространенных (ошибка 404 и ошибка 500) желательно создать свою страницу, которая лучше смотрится и представляет посетителю пути выхода. Задается она следующим образом:
P.S. Пользователи услуги хостинг сайта от HOSTiQ.ua могут воспользоваться для создания своей страницы функционалом контрольной панели cPanel (в разделе «Расширенный» пункт «Страницы ошибок»).
Настройка 301 редиректа в htaccess
Для создания постоянного перенаправления используется директива 301 редиректа, которая передает весь вес страницы на новый URL (поэтому оно предпочтительней, чем 302 редирект — в целях SEO).
Перенаправление всего сайта на новый домен:
Перенаправление страницы на новую:
Модуль перенаправления mod_rewrite
Незаменимым механизмом для изменения URL-ссылок “на лету” является модуль mod_rewrite. Его полезность, а вместе с тем, сложность заключается в том, что можно использовать несметное количество правил, включающих еще больше переменных.
Для работы модуля, прежде всего, нужны директивы:
RewriteEngine On (включает работу механизма преобразования)
Options FollowSymLinks (условие для работы mod_rewrite).
Если администратор сервера отключил данную опцию для директории пользователя, то невозможно использовать механизм преобразования. Такое ограничение накладывается на серверах виртуального хостинга в целях безопасности.
Для дальнейшего ознакомления с модулем рекомендуем обратиться к первоисточнику.
Одной из самых функциональных директив модуля mod_rewrite является RewriteRule. Для того чтобы указать условие, при котором будет работать правило, используется директива RewriteCond. Она (одна или несколько) обязательно прописывается перед RewriteRule.
Перенаправление страницы на новый домен:
Перенаправление сайта с домена без www на домен с www:
Перенаправление по протоколу HTTPS (предварительно нужно установить сертификат HTTPS):
Эти строки необходимо разместить в самом верху .htaccess.
Определение кодировки
Таблицу символов, в которой следует открыть сайт, определяет браузер. Однако, можно задать кодировку по умолчанию:
Такое изменение распространяется в пределах действия .htaccess и на все страницы сайта. Можно задать кодировку для определенного типа файла, например windows-1251 для html:
Часто сама страница несет в себе (а именно в заголовке) информацию об используемой кодировке. Нужно проверить, чтобы указанная кодировка в документе и в конфигурационном файле совпадали. Приведенная здесь utf-8 практически всегда требуется при работе популярных cms, так как они рассчитаны на большой круг пользователей по всему миру. Кстати, по умолчанию эта же кодировка настроена и на наших серверах виртуального хостинга.
Другие возможности
– Определить индексный файл сайта:
По умолчанию индексной страницей считается index.html. С помощью следующей директивы можно задать другое название файла, который отрывается первым при обращении к каталогу:
– Полезной директивой является FilesMatch, которая оговаривает пределы действия правила по названию файла, используя регулярные выражения. С ее помощью, например, можно запретить доступ к определенным файлам:
Есть некоторые директивы, которые не поддерживаются на наших серверах с виртуальным хостингом, но вы можете их разрешить на своем ВПС.
Причина в том, что работающий как suPHP веб-сервер не поддерживает php_flag и php_value. Поэтому мы предлагаем использовать сPanel (крайне полезен подраздел “Выбор версии РНР”, для работы с error_log – “Журнал ошибок”) или создать локальный файл php.ini для этой цели. Пару директив мы все-таки привели ниже:
– Для того, чтобы избежать зависания веб-сервера при обработке некорректно написанных скриптов, существует max_execution_time. С ее помощью указывается время в секундах, отведенное на обработку РНР-скрипта. Можно увеличить время ожидания веб-сервера при выполнении скрипта:
– Определить максимальный размер загружаемого файла:
– Вывести ошибки РНР в отдельный файл:
P.S. На виртуальном хостинге трудно с точностью определить, какие директивы будут работать в .htaccess, потому что многие из тех, которые ведут к изменению конфигурации веб-сервера, запрещены по понятным причинам — эти изменения затронут всех пользователей на носителе.
Если .htaccess не работает
Проверить работу файла можно, прописав несложные директивы, которые при правильном синтаксисе и верных настройках httpd.conf (как описывалось в начале статьи) должны сработать:
– например, запретив доступ к сайту извне с помощью директивы
– или записав в файл набор бессмысленных символов, которые не являются директивами. Если веб-сервер взаимодействует с htaccess, то он, конечно, не сможет их прочитать и отдаст 500 ошибку.
Если проблема действительно существует, нужно в первую очередь искать причину в главном конфигурационном файле:
– убедиться, что сервер разрешает использование файла .htaccess: есть запись AllowOverride All (и она не закомментирована с помощью #);
– проверить, что создана запись VirtualHost для домена. В качестве примера:
– название файла дополнительной конфигурации указано как вам нужно. Если это .htaccess, то:
– присутствует хостнейм сервера (указывается при создании URL-перенаправлений) в виде IP-адреса сервера или домена:
Если же причина не в httpd.conf, нужно проверить сам .htaccess на наличие синтаксических ошибок. Можно воспользоваться онлайн-сервисами (например, http://www.htaccesscheck.com/, http://htaccess.madewithlove.be/), или — оригинальным источником, где есть полный перечень директив вместе с синтаксисом.
И еще несколько советов по работе с .htaccess
Крайне желательно перед любым редактированием делать резервную копию файла – чтобы при худшем исходе можно было «откатить» изменения обратно.
Рекомендуем вносить изменения пошагово, используя минимум директив – и в случае неудачи будет легче вычислить, какое именно правило вызвало ошибку.
Хотя изменения и сразу вступают в силу, кэш браузера никто не отменял. Для проверки работы сайта после редактирования .htaccess регулярно пользуйтесь его очисткой или загружайте страницу в обход кэша — через комбинацию клавиш Ctrl + F5 (в Safari: Ctrl + R, в Mac OS: Cmd + R).
Самая распространенная ошибка веб-сервера при работе с .htaccess — 500. Она указывает на проблему в синтаксисе (опечатка в директиве, например), либо же в главном конфигурационном файле не разрешен такой тип директивы.
Полезные ссылки
Лучший источник вдохновения для работы с .htaccess:
Многие инструкции по работе с .htacess, на русском:
Простые генераторы директив для .htaccess:
Если вам недостаточно .htaccess файла для внесения изменений в конфигурацию веб-сервера, возможно, аренда выделенного сервера в Европе или США вам подойдет. На выделенных серверах вы можете вносить изменения непосредственно в настройки Apache. Наши предложения на выделенные серверы подойдут для любого пользователя. Если вас также интересует покупка доменных имен, то заказывая хостинговые услуги, вы сможете сразу узнать, сколько стоит домен и хостинг.
Источник