Что такое htaccess? Настройка перенаправлений и управление конфигурацией веб-сервера
3979
How-to | – Читать 17 минут |
Прочитать позже
Анастасия Сотула
Редактор блога Serpstat
Когда вебмастер или SEO-оптимизатор не умеет работать с htaccess, то теряет массу уникальных возможностей. От создания красивых ссылок до быстрого удаления дублей страниц из индексной базы поисковиков.
Если конфигурационный файл интернет-сервера Apache остается пока загадкой и для вас, читайте нашу статью, где мы расскажем все о htaccess, что надо знать для успешного старта изучения настроек веб-сервера.
Содержание
Файл htaccess – что это?
Как создать файл htaccess?
Синтаксис htaccess
htaccess защита сайта
Вывод ошибок htaccess
301 редирект htaccess
Другие htaccess редиректы
Как сделать поддомен через htaccess?
htaccess настройка кэширования
Другие возможности htaccess
Что делать, если не работает htaccess?
FAQ
Заключение
Файл htaccess – что это?
В процессе оптимизации работы сайтов их владельцы рано или поздно сталкиваются с проблемами, которые решаются на уровне сервера. У них обязательно возникают вопросы, что за файл htaccess, и почему он часто упоминается в тематических статьях? Давайте разберемся подробнее.
Официальное описание htaccess гласит, что он предоставляет возможность задавать серверную конфигурацию на уровне папок. У Apache есть файл, где хранятся главные настройки веб-сервера. Указанные там параметры носят глобальный характер, что не всегда удобно. htaccess делает конфигурирование более гибким.
Профессиональная настройка htaccess позволяет изменять работу Apache в отдельно взятых папках. Например, переназначать файловые типы или разграничивать доступ к директориям. Поскольку изменения происходят локально, файл с основными параметрами веб-сервера не затрагивается, в чем явный плюс.
Задаваемые в htaccess правила распространяются на папку, где размещается файл и все директории, расположенные внутри нее. Ситуация меняется после создания htaccess в той или иной поддиректории. Отметим, что локальная конфигурация доступна при условии, что это разрешено сервером. Большинство дешевых хостингов данную функцию поддерживает.
Как создать файл htaccess?
Перед тем как создать файл htaccess, нужно сделать своего рода «болванку». Идеальный вариант — простой текстовый файл. Для его создания нажмите правой кнопкой мыши по свободному пространству какой-либо папки или рабочего стола. Затем выберите «Создать» и в выпадающем списке отметьте «Текстовый документ».
Создание файла .htaccess
Откройте текстовый файл, выберите «Файл» и «Сохранить как». В появившемся окне в поле «Имя файла» скопируйте .htaccess, а «Тип файла» поменяйте на «Все файлы». В конце нажмите «Сохранить». Готово! Будьте внимательны при задании имени файла. Оно должно состоять из точки и htaccess. Никаких пробелов и дополнительных символов.
Сохранение файла htaccess
Будьте внимательны при задании имени файла. Оно должно состоять из точки и htaccess. Никаких пробелов и дополнительных символов.
Проверка названия файла .htaccess
Синтаксис htaccess
Составить правильный htaccess не всегда удается с первого раза даже специалистам. Особенно на крупных проектах. Новичкам же нет смысла глубоко изучать конфигурацию веб-сервера. Начинать стоит с малого — базовых понятий.
Если открыть htaccess «Битрикс», Drupal, Joomla или другой популярной CMS, внутри окажется перечисление команд. В документации они обозначаются как директивы. Каждая из них пишется на отдельной строке.
Когда требуется написать комментарии в htaccess, перед ними ставится знак # (решетка). Начинающиеся с нее строки сервер игнорирует. Удобно, что изменения вступают в силу после сохранения файла. Перезагружать Apache не надо.
На картинке представлен стандартный файл htaccess для CMS WordPress
На изображении пример файла htaccess для CMS Joomla. Точнее, его начало. На момент написания статьи он включал 166 строк. Разработчики постарались максимально доходчиво объяснить, с чем именно предстоит иметь дело конечным пользователям.
Наряду с директивами в htaccess используются переменные и регулярные выражения. Подробно мы их не рассматриваем. Те же «регулярки» — настолько объемная тема, что по ней пишутся книги на сотни страниц. Однако на основных моментах остановимся.
Наиболее распространенные спецсимволы регулярных выражений
Примеры переменных
Официальную документацию по htaccess читайте здесь.
htaccess защита сайта
Надежная защита сайта через htaccess вполне возможна, если хорошо разобраться в особенностях настройки сервера и понять, что и для чего блокировать. Скажем, с помощью прописанных в htaccess правил защищаются файлы, настраиваются права доступа по IP и выставляются пароли на директории. Чтобы приблизительно понять, как это работает, рассмотрим пример.
Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule ^(. *)$ index.php [F,L]
Приведенный выше набор директив решает 2 важные задачи — защищает сайт от скрипт-инъекций и изменяет запросы или глобальные переменные. Вначале активируется контроль символических ссылок. Под ними следует понимать спецфайлы, где вместо предназначенных для пользователей данных хранятся пути к файлам, которые открываются при обращении к ссылкам.
Вслед за контролем сим-ссылок запускается механизм перезаписи адресов страниц. Далее блокируются ссылки с тегами <script> и сторонние скрипты для изменения переменных языка программирования PHP GLOBALS и REQUEST. В конце подозрительные запросы перенаправляются на страницу с ошибкой 403. Тем самым затрудняется жизнь злоумышленников, которые пытаются взломать сайт.
Мало что поняли? Не страшно! Даже если поверхностно разбираетесь в правилах htaccess, никто не мешает пользоваться чужими разработками. Вы можете без проблем взять показанный нами набор директив и использовать на сайте.
Вывод ошибок htaccess
Временами на сайтах появляются не загружающиеся страницы. При обращении к ним вместо контента пользователи видят белый экран, что говорит о наличии ошибок. Как их посмотреть? Если «движок» сайта написан на PHP, вывод ошибок в htaccess настраивается одной директивой –
301 редирект htaccess
SEO-оптимизаторы постоянно используют 301 редирект в htaccess. Делается это для повышения эффективности поискового продвижения. В первую очередь путем перенаправлений удаляются ненужные страницы из индекса поисковиков.
Перед тем как прописать 301 редирект в htaccess, оптимизатор анализирует сайт и находит мешающие продвижению странички. Чаще всего они содержат ошибки и дубли контента. Отбор страниц выполняется вручную или автоматически.
На следующем этапе специалист продумывает, как настроить 301 редирект htaccess с максимальной эффективностью. Одно дело, когда удаляются 10-20 страниц, и совсем другое — тысячи. К составлению директив требуются совершенно разные подходы.
В конечном итоге оптимизатор подбирает оптимальный вариант, как сделать 301 редирект через htaccess, и приступает к написанию серверных инструкций. При условии, что они составлены правильно, страницы исчезают из индекса. Происходит это так.
Поисковый робот заходит на страничку для переиндексации. При обращении срабатывает редирект. Поисковик получает сигнал, что страница больше не существует по старому адресу. Значит, ее надо убрать из индексной базы.
Хотите узнать, как с помощью Serpstat оптимизировать сайт?
Нажимайте на космонавта и заказывайте бесплатную персональную демонстрацию сервиса! Наши специалисты вам все расскажут! 😉
Постраничный редирект 301 htaccess
На практике 301 редирект с одной страницы на другую представляется в виде простой инструкции. (.+)$ /index.php/$1 [L,QSA]
htaccess редирект на другой домен
RewriteEngine On RewriteCond %{HTTP_HOST} mysite_01.com RewriteRule (.*) http://mysite_02.com/$1 [R=301,L]
Вебмастера хотят включить 301 переадресацию с сайта на другой домен в htaccess по разным причинам. Одна из самых распространенных — перенос проекта на альтернативное доменное имя. Допустим, с бесплатного на платное.
Составлять htaccess 301 редирект на новый домен надо крайне аккуратно. Малейшая ошибка способна привести к выпадению целых разделов из индекса. Лучше писать правила постепенно и предварительно тестировать на локальном сервере.
Нужен 301 редирект htaccess с одного домена на другой и при наличии 2 или более имен. Предположим, главный сайт имеет 2 адреса — mysite.com и my-site.com. Первый — главный, а второй — вспомогательный. С него и идет перенаправление.
Некоторые вебмастера применяют htaccess перенаправление на другой домен в целях аккумуляции трафика. http://m.mysite.com%{REQUEST_URI} [R,L]
Другие htaccess редиректы
Как сделать поддомен через htaccess?
Поддомены через htaccess не создаются. Зато можно воспользоваться перенаправлением. Правильная настройка редиректа htaccess выглядит следующим образом:
Redirect /category http://category.mysite.com
Быстрое создание субдоменов поддерживает панель управления любого платного хостинга.
htaccess настройка кэширования
Эффективная настройка кэширования через файл htaccess возможна, если он размещается в корневой папке сайта. Прописанные в нем правила распространяются на директорию и ее подпапки. Глубина вложения поддиректорий значения не имеет.
<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType text/html "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 1 month" </IfModule>
Через htaccess кэш браузера обновляется не только в пределах указанных периодов. /])$ $1/ [L,R=301]
Что делать, если не работает htaccess?
- Сайт на хостинге. Когда появляется 500 ошибка, значит, сервер обрабатывает файл. Сделайте резервную копию htaccess, удалите содержимое и напишите простую директиву. Если оповещение с кодом 500 исчезнет, присутствуют неточности в правилах. Надо найти и устранить. При отсутствии реакции веб-сервера обращайтесь в саппорт. Иначе рискуете безрезультатно потратить время.
- Веб-сайт на локальном сервере. Здесь все гораздо сложнее, потому что за работу веб-сервера отвечаете лично вы. Допустим, директивы написаны правильно и дело не в нарушении синтаксиса. Для начала установите программу с нуля и проверьте, как работает htaccess с настройками по умолчанию. Не помогло? Обратитесь в службу поддержки Apache или создайте тему в профильном сообществе наподобие StackOverflow.
Как подключить htaccess?
Чтобы включить htaccess, откройте файл с настройками веб-сервера Apache и найдите строку AllowOverride None. Замените None на All.
Для чего нужен htaccess файл?
- Авторизация.
- Аутентификация.
- Определение собственных страниц с ошибками.
- Создание красивых адресов.
- Оптимизация кэширования с целью снижения нагрузки на веб-сервер.
- Переопределение главных настроек Apache.
Сколько 301 редиректов можно прописать в htaccess?
Неограниченное количество. Учтите, что не рекомендуется злоупотреблять числом перенаправлений или создавать многоуровневые правила, когда страница А отправляет пользователей на страничку Б, а та на В, откуда на Г и т. д.
Как найти и где находится htaccess?
Обычно файл размещается в корневой папке сайта. Иногда он находится в подпапках.
На каком языке написан htaccess?
Файл не включает программный код, а содержит набор директив для веб-сервера. Синтаксис заимствован из XML. Применяются также регулярные выражения. Пишутся инструкции на английском языке.
Существует ли онлайн-генератор редиректов htaccess?
Да, существуют онлайн-генераторы редиректов htaccess. Функционал подобных онлайн-сервисов значительно отличается. Как вариант, на этом сайте создаются простейшие редиректы между двумя страницами, а этот сервис уже предоставляет больше возможностей.
Заключение
Если перед вами стоит много задач по настройке сервера через htaccess, не пытайтесь быстро решить все. Вначале настройте редиректы. Потом кэширование. На третьем этапе разберитесь со страницами ошибок. Полагаем, общая идея понятна. Планомерное конфигурирование снизит вероятность появления ошибочных правил, что положительно отразится на поисковом продвижении и работе сайта.
Чтобы быть в курсе всех новостей блога Serpstat, подписывайтесь рассылку. А также вступайте в чат любителей Серпстатить и подписывайтесь на наш канал в Telegram.
Serpstat — набор инструментов для поискового маркетинга!
Находите ключевые фразы и площадки для обратных ссылок, анализируйте SEO-стратегии конкурентов, ежедневно отслеживайте позиции в выдаче, исправляйте SEO-ошибки и управляйте SEO-командами.
Набор инструментов для экономии времени на выполнение SEO-задач.
7 дней бесплатно
Оцените статью по 5-бальной шкале
5 из 5 на основе 4 оценок
Нашли ошибку? Выделите её и нажмите Ctrl + Enter, чтобы сообщить нам.
Рекомендуемые статьи
How-to
Анастасия Сотула
Что такое смешанный контент и как устранить его при использовании протокола HTTPS
How-to
Анастасия Сотула
Как внедрить на сайте разметку Twitter Card
How-to
Анастасия Сотула
Как создать статью в Википедии
Кейсы, лайфхаки, исследования и полезные статьи
Не успеваешь следить за новостями? Не беда! Наш любимый редактор подберет материалы, которые точно помогут в работе. Только полезные статьи, реальные кейсы и новости Serpstat раз в неделю. Присоединяйся к уютному комьюнити 🙂
Нажимая кнопку, ты соглашаешься с нашей политикой конфиденциальности.
Поделитесь статьей с вашими друзьями
Вы уверены?
Спасибо, мы сохранили ваши новые настройки рассылок.
Сообщить об ошибке
Отменить
.htaccess — htaccess редирект с каталога
Вопрос задан
Изменён 7 месяцев назад
Просмотрен 28 раз
Всем привет! Подскажите как настроить редирект в .htaccess по следующему условию.
- https://site.ru/shop/accessories/101/ -> https://site.ru/shop/accessories/101/
- https://site.ru/shop/accessories/ -> https://site.ru/
- https://site. shop/$ https://site.ru/? [R=301,L]
Результаты:
Для /shop/
https://htaccess.madewithlove.com?share=52702422-00d5-43f8-a6c2-ada7fb65c137
Для /shop/accessories/
https://htaccess.madewithlove.com?share=8e2cf9f7-2ace-41a7-93a3-33a87cbaf5af
Для /shop/accessories/101/
https://htaccess.madewithlove.com?share=42454e8e-5cd6-4904-a877-e52d822485ea
8
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Как настроить редирект 301 в .
htaccess с примерамиПостоянный редирект 301 информирует поисковые системы и другие онлайн-сервисы о том, что старая ссылка была заменена новой. Это рекомендуемый метод направления трафика с существующей страницы. Этот тип переадресации 301 можно настроить напрямую через файл .htaccess или в интерфейсе cPanel, если он доступен.
- Обычное использование переадресации 301
- Настройка переадресации 301 через файл .htaccess
- Настройка перенаправления 301 через cPanel
Распространенное использование перенаправления 301
Некоторые распространенные применения перенаправления 301 в . htaccess :
- Перенаправить отдельные файлы в одном домене.
Старый файл был перемещен, или информация теперь содержится в новом файле.
- Перенаправить старый домен на новый домен.
Вы переместили веб-сайт со старого домена на новый и хотите, чтобы все старые ссылки вели на новый сайт.
- Сила www. версия домена или заставить не www. версия домена .
Посетители могут получить доступ и сделать ссылку на ваш веб-сайт через example.com или www.example.com . С помощью перенаправления вы можете установить одно из них в качестве предпочтительного доменного имени, отображаемого на вашем сайте.
- Перенаправить все файлы с определенным расширением.
Раньше у вас были все ваши файлы с расширением вроде .php , и вы преобразовали все в .htm , поэтому с помощью перенаправления 301 вы можете обновить все ссылки для использования нового расширения.
Настройка перенаправления 301 через файл .htaccess
На сервере Linux вы должны использовать файл .htaccess для реализации перенаправления 301 для своих страниц. Теперь мы покажем вам, как редактировать файл .htaccess, а затем рассмотрим различные параметры перенаправления.
- Войдите в свою cPanel.
- В разделе Файлы щелкните Диспетчер файлов .
- Убедитесь, что выбран параметр Показать скрытые файлы , нажав Настройки в правом верхнем углу диспетчера файлов.
- Выберите параметр Корень документа для: и выберите свой домен в раскрывающемся списке.
- Щелкните правой кнопкой мыши файл .htaccess и выберите Изменить .
- Если ваш .htaccess файл все еще не найден после предыдущих шагов, нажмите New File в левом верхнем углу, назовите файл . htaccess и установите каталог для создаваемого файла на /public_html/ или документ корень вашего сайта.
- У вас может появиться всплывающее диалоговое окно кодирования текстового редактора, вы можете просто нажать Изменить , чтобы продолжить.
Перенаправление файлов
Для перенаправления отдельных файлов, например example.com/oldfile.htm 9От 0004 до newfile.htm вы можете использовать перенаправление 301 следующим образом:
Перенаправление 301 /oldfile.htm /newfile.htm
example.net/newfile.htm :
Перенаправление 301 /oldfile.htm https://example.net/newfile.htm
Перенаправление домена
Если у вас был старый домен, такой как example.com и вы решил использовать example.net для веб-сайта, вы можете настроить перенаправление 301 для всего домена, чтобы старые ссылки на 9(.*)$ https://пример. нетто /$1 [L,R=301,NC]
Force www. на домене
Поисковая система, такая как Google, интерпретирует example.com и www.example.com как два отдельных веб-сайта. Пользователям рекомендуется выбрать одну версию, которую они хотели бы отображать в поисковых системах. Используя переадресацию 301, пользователи могут указать, какое доменное имя отображается на их сайте.
Если у вас есть несколько ссылок в Интернете, по которым люди ссылаются на ваш сайт, как 9(.*).php$ /$1.htm [R=301,L]
Теперь вы должны знать, как правильно настроить постоянную переадресацию 301 на своем веб-сайте, чтобы поисковые системы и посетители, приходящие на ваш сайт по старым ссылкам, могли все еще добраться до вашего нового содержания.
Настройка перенаправления 301 в cPanel
Для пользователей, размещающих свои сайты на узлах на основе cPanel, можно настроить перенаправление через интерфейс cPanel. Этот инструмент автоматически добавляет необходимый код в файл . htaccess для правильной работы перенаправления.
- Войдите в cPanel.
- Нажмите кнопку Перенаправления в разделе Домены .
- После этого вы окажетесь на странице Добавить перенаправление . Щелкните раскрывающийся список для Введите и выберите либо Постоянное (301) , либо Временное (302) перенаправление.
- Щелкните следующий раскрывающийся список и выберите домен, который вы хотите перенаправить.
- В поле косой черты «/» введите любое имя папки (при необходимости).
- Введите адрес, на который вы хотите перенаправить, в разделе Redirects to .
- Выберите, хотите ли вы « Перенаправлять только с www. » « Перенаправление с www или без него. » или « Не перенаправлять www. “
- Установите флажок, если вы хотите создать перенаправление Wild Card . Это добавит имя файла/папки после URL-адреса при перенаправлении. Например, example.com/test.php перенаправит вас на example2.com/test.php.
- Нажмите Добавить , когда закончите.
Поздравляем, теперь вы знаете, как создать редирект в cPanel! Вы знали? Если у вас есть сайт WordPress, вы также можете создать переадресацию 301 прямо в панели управления.
Знайте, что вы всегда сможете обратиться к своим клиентам, когда они в вас нуждаются, благодаря нашим услугам выделенного хостинга.
Общие перенаправления .htaccess · GitHub
#301 Перенаправления для .htaccess #Перенаправить одну страницу: Перенаправление 301 /pagename.php http://www.domain.com/pagename.html #Перенаправить весь сайт: Перенаправление 301 / http://www. domain.com/ # Перенаправить весь сайт в подпапку Перенаправление 301 / http://www.domain.com/subfolder/ # Перенаправить подпапку на другой сайт Перенаправление 301 /подпапка http://www.domain.com/ #Это перенаправит любой файл с расширением .html, чтобы использовать то же имя файла, но вместо этого использовать расширение .php. RedirectMatch 301 (.*)\.html$ http://www. domain.com$1.php ## #Вы также можете выполнять 301 редиректы с помощью перезаписи через .htaccess. ## #Перенаправление со старого домена на новый домен Переписать двигатель на RewriteBase / RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] 9(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC] # Перенаправление из старого домена с подкаталогом в новый домен без подкаталога, включая полный путь и строку запроса: Параметры +FollowSymLinks Перезапись двигателя на RewriteCond %{REQUEST_URI} ^/subdirname/(. *)$ 9(.*) http://www.katcode.com/%1 [R=302,NC] Переписать и перенаправить URL-адреса с параметрами запроса (файлы, размещенные в корневом каталоге) Исходный URL: http://www.example.com/index.php?id=1 Желаемый целевой URL: http://www.example.com/path-to-new-location/ Синтаксис .htaccess: Переписать двигатель на RewriteCond %{QUERY_STRING} id=1 9index\. php$ /путь к новому местоположению/? [Л,П=301] URL-адреса перенаправления с параметрами запроса (файлы размещены в подкаталоге) Исходный URL: http://www.example.com/sub-dir/index.php?id=1 Желаемый целевой URL: http://www.example.com/path-to-new-location/ Синтаксис .htaccess: Переписать двигатель на RewriteCond %{QUERY_STRING} id=1 RewriteRule ^sub-dir/index\. php$ /path-to-new-location/? [Л,П=301] Перенаправить один чистый URL-адрес на новый чистый URL-адрес Исходный URL: http://www.example.com/old-page/ Желаемый целевой URL: http://www.example.com/new-page/ 9старая-страница/?$ $1/новая-страница$2 [R=301,L] Переписать и перенаправить URL-адреса с параметром запроса в структуру на основе каталога, сохранив строку запроса на корневом уровне URL-адреса Исходный URL: /d]+)/?$ index.php?id=$1 [QSA]http://www. example.com/index.php?id=100 Переписать URL-адреса с параметром запроса в структуру на основе каталога, сохранив параметр строки запроса в подкаталоге URL-адреса Исходный URL: http://www.example.com/index.php?category=fish Желаемый целевой URL: 9(.*)$ http://www.example-new.com/ [R=301,L] #Из блога.oldsite.com -> www.somewhere.com/blog/ сохраняет путь и запрос и исключает дополнительный путь к блогу, если домен — blog.