Как сделать 301-редирект в файле .htaccess? Примеры и правила настройки
Введение. Правила приведены для сервера Apache. В правилах: %
Проверка кода ответа. Быстрая и бесплатная проверка кодов ответа для списка URL в режиме онлайн реализована в рамках комплекса инструментов «Пиксель Тулс», предусмотрено удобное цветовое кодирование и загрузка URL файлом.
Анализ проведён с помощью инструментов в сервисе Пиксель Тулс.
Ниже даны наиболее используемые правила настройки файла .htaccess для 301-редиректа. Лучше размещать все правила после двух строк:
Options +FollowSymLinks
RewriteEngine On
# Текстовый комментарий, данная строчка не будет обрабатываться.
RewriteCond % RewriteCond % RewriteCond % Redirect 301 /was.php http://www.site.ru/new.php При этом, новый адрес указывать необходимо полностью с http и доменным именем. RewriteRule ^dir /dir-new/$1 [R=301,L] Скажем, адрес страницы имеет вид: http://www.site.ru/dir/index.php?IBLOCK_ > RewriteCond % Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), можно использовать следующий код: RewriteCond % Если адрес имеет следующий вид: http://www.site.ru/?abc то для перенаправления подойдет последовательность строчек: RewriteCond % Если требуется настроить переадресацию только для адреса http://www.site.ru/dir/, но при этом чтобы страница http://www.site.ru/dir/index.php?IBLOCK_ > RewriteRule ^dir/$ http://www.site.ru/new-dir/ [R=301,L] Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код (он на латинице). В частности, сама зона .рф преобразуется в .xn--p1ai. RewriteCond % RewriteCond % RewriteCond % RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301] RewriteRule ^dir(.*)$ /new-file.php [L,R=301] RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301] RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php RewriteRule ^img/(.+)\.jpg$ http://img.domain.ru/$1.jpg [R=301,L] Указывается порядок загрузки типов индексного файла, лежащих в корне каталога. DirectoryIndex index.html index.php index.htm index.shtml RewriteCond % Для всех индексных страниц на сайте: RewriteCond % RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L] Код позволяет поставить 301-редирект со всех папок вида http://site.ru/***/uniqe-file.html на один файл в корне /unique-file.html. Бывает полезен при переделке сайта и изменении ссылок. RewriteRule ^testovyi/test/?$ /studio/news/detail.php? >Код позволяет создать копию страницы с относительным адресом /studio/news/detail.php? > Позволяет устранить наличие дублей URL с HTTPS в индексе поисковых систем. RewriteCond % RewriteCond % Настройка позволяет отклонить спамный реферальный трафик с ряда ресурсов по заголовку HTTP_REFERER. Внимание, важно чтобы код ответа сервера для 404 ошибки был именно 404. Путь к файлу указывается с помощью следующей строчки: ErrorDocument 404 /404-for-me.php ! Все правила выполняются в прямом порядке их следования в файле .htaccess и правило, написанное позже, и будет выполняться позже. ! Для сайтов, на которых используется не сервер Apache, аналогичные 301-редиректы легко настраиваются с помощью PHP. ! Оптимально настраивать все редиректы сразу на конечную страницу (без промежуточных перенаправлений, в один шаг) это улучшает их восприятие со стороны поисковых систем и пользователей. RewriteCond % RewriteCond % Переадресация с www.site.ru/component/content/?view=featured на www.site.ru/ Переадресация с www.site.ru/index.php? > RewriteCond % . — Точка заменяет произвольный символ. .* — заменяет абсолютно любой набор символов. «.*» — найдёт все подстроки между кавычками. \w — буква, цифра или подчёркивание _. RewriteRule (.*) $1? [R=301,L] Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений. Спецсимволы, используемые в правилах и их значения. Модификаторы используются после обычных, спецсимволов или их групп и позволяют расширить возможности шаблонов для срабатывания правил. Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L]. Файл .htaccess (англ. hypertext access) используется для простой и удобной настройки веб-сервера на котором хранится сайт пользователя. Соответственно меняя настройку веб-сервера, мы сможем поменять работу сайта. Как правило, файл .htaccess находится в корневом каталоге, а его действие распространяется на весь сайт и на все подкаталоги. Если же в другом каталоге содержится свой .htaccess, то он будет действовать только на свой каталог и подкаталоги. Важно! Изменяя файл .htaccess можно очень нарушить работу сайта, а также необдуманные действия с ним могут не иметь видимых последствий, но повлечь за собой снижение позиций в поисковых системах, либо полную их потерю. Поэтому мы рекомендуем перед любыми изменениями файла сохранять его копию, чтобы иметь возможность вернуть прежние настройки. Обычно он располагается в коневом каталоге сайта. Иногда, в различных CMS может находится файл htaccess.txt, который никак не воспринимается сервером и ни на что не влияет. Чтобы он начал работать нужно его переименовать в .htaccess. Если это не получится сделать на вашем компьютере, то зайдите на свой сервер через FTP-клиент, и переименуйте файл прямо сервере. Редактировать файл на компьютере можно с помощью любого текстового редактора, но чтобы избежать возможных проблем с кодировкой мы рекомендуем использовать для этого Notepad++. Все просто, напишите в первой строчке этого файла любое слово (например YAROBOT), сохраните файл и замените им находящийся на сервере. Если сайт продолжит работать, то .htaccess в данный момент не работает. Если же появится ошибка 500 Internal Server Error, то это значит, что веб-сервер не смог понять команду (YAROBOT) и выдал ошибку. Этот факт подтвердит, что работа .htaccess на сервере поддерживается и включена в данный момент. Чтобы вернуть сайту работоспособность удалите строчку с YAROBOT. Далее мы поговорим о всем полезном, что можно сделать с помощью данного файла. Важно! Если вы хотите, чтобы ваш редирект работал, нужно перед строками, которые рекомендуются ниже по тексту, обязательно прописать Для этого в файл .htaccess вносим следующие строки: Redirect 301 /старая-страница.html http://сайт.рф/новая-страница.html RedirectPermanent /старая-страница.html http://сайт.рф/новая-страница.html Например перенаправление с http://www.site.com на http://site.com. Это очень полезная вещь, часто используется в СЕО Options +FollowSymLinks Перенаправление с http://site.com на http://www.site.com (не советуем использовать) Options +FollowSymLinks Чтобы при вводе site.com/page или site.com/page/ происходило перенаправление на site.com/page.html пишем в .htaccess следующее: Обратный редирект с site.com/page.html на site.com/page Например было site.com/page/, стало site.com/page Перенаправление всех страниц одного раздела site.com/razdel-1/razdel-2/page на на страницы другого раздела site.com/razdel-1/page RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L] Следующее правило корректно перенаправит посетителей с каждой конкретной страницы старого сайта на такую же страницу на новом сайте. Например со страницы oldsite.com/page на newsite.com/page RewriteCond % Когда пользователь хочет увидеть сайт (отправляет запрос на сервер хостера), то сервер возвращает ему ответ с кодом. Коды 1-399 свидетельствуют о нормальной работе сервера, а коды 400-599 сообщают об ошибке сервера (коды всех ошибок смотрите в спец. статье). Например, если сервер с вашим сайтом перегружен, или у него происходит перезагрузка, то пользователь увидит непонятный ему текст (например, 500 Internal Server Error), подумает, что сайт больше не будет работать и больше никогда на него не вернется. Чтобы вместо стандартной страницы ошибки (непонятно для пользователя) показать ему вашу отдельную страницу, на которой будет например, сообщение о том, что сайт временно не работает, но позже восстановит свою работу и на него обязательно стоит вернуться (сайт КиноПоиск при перегрузки серверов выдает сообщение «Матрица перезагружается. » и соответствующую картинку). Наиболее распространенным решением является составление собственной страницы вместо стандартной 404-ошибки. Эта ошибка показывается пользователю, если введен адрес несуществующей страницы. Думающие вебмастеры, создают свою страницу вместо непонятной стандартной, на которой пишут, что человек перешел по несуществующей ссылке и предлагают поискать нужную информацию на сайте, а не уйти с него. Пример нашей 404-страницы можно увидеть здесь. Чтобы показывать пользователям свою страницу ошибки вместо стандартной, нужно создать отдельную страницу (например http://yoursite.com/404.html) и добавить соответствующий код в файл .htaccess Вот примеры кода, который нужно добавить: ErrorDocument 400 http://yoursite.com/400.html Если вы хотите подставить другую страницу вместо ошибки 403, то нужно указывать еще текстовое сообщение, которое будет показано, например: ErrorDocument 403 «Sorry can’t allow you access today, see you later alligator :)» Файл .htaccess дает большие возможности для улучшения безопасности сайта. Наиболее популярные мы сейчас перечислим: #Включает отслеживание сим-ссылок Файл .htaccess – это специализированный служебный документ, использующийся для изменения настроек веб-сервера Apache и похожих серверов. Проще говоря, его использование поможет вам изменять работу сайта: настраивать доступ к папкам, файлам и прочим материалам, указывать правила переписи ссылок и предупреждения об ошибке. Вместе с этим вы не меняете функционирование всего сервера, настраивая лишь дополнительные параметры у некоторых пользователей. Когда владелец сайта работает над своим проектом, обязательно придет момент, когда ему понадобится использовать файл .htaccess. Несмотря на его огромную важность, для многих вебмастеров, особенно новичков, он остается неизведанным, ведь, чтобы разбираться в нем, нужно хорошо знать не только SEO, но и программирование. В этой статье мы поможем вам понять, зачем нужен .htaccess и как его настроить. Это очень важно, потому что он открывает гибкие возможности для владельцев сайтов, желающих обеспечить для своего ресурса надежную безопасность. В данном файле сайтостроители могут: Главное предназначение .htaccess – настраивать сайт и каталоги в соответствии с определенными требованиями. То есть, посредством этого файла, SEO-специалисты и программисты могут изменять настройки веб-сервера, даже не имея администраторских прав. Но изменения вносятся только для определенного сайта, и на сам сервер они никак не влияют. Конфигурации сервера изменяются только с использованием директив (команд), включающих в себя «ключ» и «значение» для него. Все самые важные директивы, позволяющие управлять сервером, находятся в основном файле конфигурации, называющимся httpd.conf. Проблема в том, что у рядового пользователя нет возможности получить к нему доступ, так как там находится большое количество параметров, от которых зависит работоспособность всего сервера. Вот почему актуален .htaccess, позволяющий менять некоторые директивы в главном файле. Все корректировки во вспомогательном файле действуют на весь каталог, в котором он расположен. И если загрузить данный документ в корневую папку сайта, то изменения коснутся всего ресурса. Можно с легкостью проверить, есть ли у вас служебный файл. От многих других документов он отличается тем, что имеет только расширение в виде названия из слова, тогда как самого названия нет. Да, мы все привыкли видеть файлы с названием из слова, и расширением после точки, которое состоит всего из 2-3 букв. Но пустые названия позволяют делать файлы и папки «скрытыми», с открытым исходным кодом. Из этого следует вывод, что .htaccess для обычных пользователей остается невидимым, поэтому они не смогут его изменить. Но есть у этого метода «скрытия» файла и обратная сторона медали. В стандартных FTP-клиентах на ОС Windows и Mac, документ очень часто остается невидимым для пользователей, из-за чего они ошибочно полагают, что его просто нет. Поэтому человек создает новый файл для внесения своих конфигураций, кодов для обработки ошибок, создания доступа к папкам и пр. Хорошо, что большинство хостингов оставляют место на диске, где htaccess-файл уже установлен автоматически. Но если вы не найдете его, то попробуйте зайти в менеджер файлов, который встроен в ваш хостинг. В нем могут показываться скрытые файлы и директории. Ищите его в public_html, а затем с помощью установленного в программе текстового редактора откорректируйте и сохраните файл, после чего он загрузится на сервер самостоятельно. Если вы не найдете документ по указанному пути, то создайте собственный. Может случиться так, что на экране появится ошибка. Значит, данный хостер запретил создавать служебный файл. Недорогие хостинги зачастую запрещают клиентам создавать и изменять подобный документ. Таким образом они стимулируют пользоваться их услугами по более дорогостоящим тарифам, где это разрешено. Для этого вам понадобится самый обычный текстовый редактор, к примеру, Блокнот, который есть на любом ПК: Далее перепроверьте, создан ли документ правильно. Обязательно посмотрите, не сохранили ли вы его как .htaccess.txt. Затем загрузите файл в корневую папку сервера, и если не отобразится ошибка 500, значит, вы все сделали правильно. Отныне вы можете редактировать файл, что позволит вам управлять веб-сайтом более гибко. Рассмотрим самые популярные команды для .htaccess. Эти директивы используются с завидной регулярностью. Они позволяют перенаправить посетителя со старого URL на новую страницу. Это возможно благодаря 301-редиректу. Достаточно в код файла вписать: В целом директива будет отображена в таком виде: URL_LOCAL – это старый адрес, с которого осуществляется перенос пользователя. URL_REDIRECT – новый URL, куда переносится страница. В поле [status] могут быть следующие значения: Этот модуль содержится в Apache. В нем есть изобилие самых разных директив для расширенного управления адресами. К основным из них относятся: Предназначен для того, чтобы преобразовать домен с www на URL без www. Достаточно ввести правило: На сегодняшний день поисковик Google активно призывает владельцев сайтов к использованию безопасного соединения, для чего необходимо перенаправлять пользователей с http на https при помощи кода: Если вы не хотите, чтобы URL страницы заканчивался названием каталога http://название_вашего_сайта.ru/catalog, введите в файл код: Выполнив данную команду, в дальнейшем после адреса в автоматическом режиме будет добавляться слеш: http://название_вашего_сайта.ru/catalog/ Изменив название сайта, не забудьте в .htaccess указать: Оптимизируя сайт и под Яндекс, и под Google, изменение доменного имени может быть чревато неприятными последствиями. Инструкции в robots.txt, предназначенные для Яндекса, перекрываются 301-редиректом. Но этого можно не допустить, добавив в код правило: В .htaccess, так же, как и в robots.txt, можно закрыть доступ к сайту для роботов поисковых систем: Практически любой интернет-пользователь встречался с ошибкой 404 not found (страница не найдена или удалена). Но есть огромное количество других ошибок, о которых вы наверняка не слышали. В служебном файле вы можете прописать файл для его отображения во время ошибки. Но предварительно необходимо создать тот же файл в html расширении, и прописать в нем, в чем заключается эта ошибка. Затем, в зависимости от используемой ошибки, внесите в кодировку .htaccess: Когда посетитель заходит на сайт, сразу же открывается индексный файл index.xml. Вы можете заменить индексную страницу на любую другую, дополнив код: Либо добавить несколько таких страниц, и поисковик будет находить их в соответствующей последовательности: Данная функция нужна, чтобы текст отображался на экране пользователя правильно. Иначе вместо нормальной читабельной страницы он будет видеть непонятные символы. Сегодня широко распространена кодировка: Windows-1251 – Кириллица и UTF-8 – двухбайтовая кодировка. Для выбора кодировки в служебном документе, применяется директива: А чтобы в дальнейшем, когда вы будете загружать файлы на сервер, не возникало проблем, укажите, что все новые файлы будут преобразовываться в аналогичную кодировку: Для этого в закрываемом каталоге пропишите: Посредством файла .htaccess вы можете запретить полностью или частично доступ к определенным файлам. Допустим, вы хотите закрыть доступ к системному каталогу. Тогда в соответствующем .htaccess пропишите: Для запрета просмотра определенного файла, например, test.php: Открыть просмотр для конкретного IP, и при этом закрыть доступ остальным, позволяет команда: 12.345.678.90 – пример IP-адреса (здесь нужно указать нужный вам IP). Как видите, служебный файл .htacces является одним из самых важных инструментов для полноценной работоспособности веб-ресурса. И ознакомившись с его возможностями, вы наверняка удивились, почему раньше знали об этом файле мало. Это эффективный инструмент для того, чтобы SEO-специалисты и программисты могли вносить изменения в конфигурации веб-сервера для определенных сайтов, не влияя на сам сервер. Благодаря нему, владельцы интернет-проектов могут сообщить поисковикам и посетителям о смене домена и перенести их на новый, ускорить индексацию сайта, закрыть доступ ко всем или определенным данным ресурса, не допустить их корректировки и скачивания посторонними лицами, обеспечить доступ к определенным файлам по IP и паролю. Оцените эту статью. Чтобы мы могли делать лучший контент! Напишите в комментариях, что вам понравилось и не понравилось! Рейтинг статьи: 4.4 / 5. Кол-во оценок: 14 Пока нет голосов! Будьте первым, кто оценит эту статью.
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %
RewriteRule ^(.*)$ https://pixelplus.ru/$1 [R=301,L]
RewriteRule ^$ /? [R=301,L]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]
RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]
RewriteRule ^dir(.*)$ /all.php [L,R=301]
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]
RewriteRule ^(.*)$ http://site.ru%
RewriteCond %
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
RewriteCond %
RewriteRule .* — [F]
RewriteRule (.*) http://mobile.site.ru/ [L,R=301]
RewriteRule (.*) http://no-search.site.ru/ [L,R=301]
RewriteCond %
RewriteRule ^component/content/$ /? [R=301,L]
[abc] — обозначает перечень символов, совпадающих с буквами a, b, или с.
[^abc] — перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.
* — означает, что предшествующий символ может повторяться (0 или более раз).
[abc]* — команда найдёт идущие подряд символы из заданного набора.
[^abc]* — с точностью до наоборот.
^ — начало строки (в том случае, если используется в начале выражения).
$ — обозначает конец строки.
\d — заменяет любую цифру.
\D — заменяет любой символ, но не цифру.
7 — заменяет любую цифру.
[a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.
[A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.
[a-zA-Z] — любая буква от a до Z в любом регистре.
[a-Z] — то же самое.
Располагать после: RewriteBase /Памятка по используемым символам и обозначениям
htaccess
Что такое .htaccess?
Где находиться файл .htaccess?
Как проверить работает ли .htaccess?
Правильный 301 редирект через файл .htaccess
301 Редирект с одной страницы на другую (или сайт)
301 Редирект с www-сайта на сайт без www
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L] Обратный редирект с домена без www на домен с www
RewriteEngine On
RewriteCond %
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] Редирект всех посетителей со старого сайта на новый
Как добавить .html в конце URL?
Как убрать .html в конце URL?
Как убрать слэш в конце URL?
301 Редирект с одного раздела на другой?
301 Редирект при переезде со старого домена на новый
Правильное изменение страниц ошибок через .htaccess
ErrorDocument 404 http://yoursite.com/404.html
ErrorDocument 500 http://yoursite.com/500.html
Настройки безопасности сайта через файл .htaccess
Защита сайта от скриптовых инъекций
Options +FollowSymLinks
#Запускает url_rewriting
RewriteEngine On
#Блокирует все ссылки, содержащиеФайл .htaccess: что это такое, зачем он нужен, как правильно создать и настроить
Возможности и для чего нужен
Где находится .htaccess
Как правильно создать .htaccess
Примеры использования
Редирект
Mod_rewrite (директивы сложного переноса)
1. Указание основного зеркала
2. Перенос на https
3. Проставление слеша в конце адреса
4. Перенос домена
5. Запретные команды для поискового бота
Обработка ошибок
Индексные документы
Указание кодировки
Указание паролей для директорий
Доступ к файлам и директориям
Заключение