Худший час миграции сайта, который я когда-либо делал, был потрачен на просмотр ошибки 500 на живом сайте, и причиной был один случайный символ в файле .htaccess. я написал от руки партию перенаправлений для перестройки WordPress, толстопалый флаг RewriteRule, и Apache ответил отказом обслуживать весь домен. сами перенаправления были в порядке; синтаксис вокруг них был не, и .htaccess неумолим таким образом. после этого я перестал писать правила перенаправления от руки и начал генерировать их, что именно то Генератор перенаправления htaccess на Toolz.dev делает. это руководство охватывает, как Apache перенаправляет работу, когда использовать каждый тип, и как канонизировать HTTPS и www, ничего не нарушая.
TL;DR: Файл .htaccess сообщает Apache, как перенаправить URL-адреса. Используйте 301 для постоянных ходов, 302 для временных,
Redirectдля точных путей иRewriteRuleдля шаблонов. The Генератор перенаправления htaccess строит все эти плюс принудительные правила HTTPS и www из простого списка, правильно упорядоченного, полностью в вашем браузере, ничего не загружаемого.
Что такое генератор перенаправления htaccess?
Генератор перенаправления .htaccess превращает простой список сопоставлений URL-адресов от старого к новому в точные директивы Apache, выполняющие перенаправления. Какой код состояния вы выбираете, является вопросом протокола, а не Apache: РФЦ 9110 определяет 301 как постоянный и 302 как найденный. файл.htaccess - это файл конфигурации для каждого каталога, который Apache читает по каждому запросу, а на общем хостинге это обычно единственное место, где вы можете объявить перенаправления, потому что вы не можете редактировать конфигурацию главного сервера. Генератор пишет оба варианта перенаправления, которые поддерживает Apache: mod_alias Redirect директива для простых изменений пути один к одному и mod_rewrite RewriteRule директива для совпадений шаблонов, которые ловят множество URL-адресов одновременно.
Причина, чтобы генерировать их, а не вводить их, заключается в том, что синтаксис .htaccess является точным и наказывающим.Непомещенный флаг, неэкранированная точка в шаблоне или правило в неправильном порядке не выдают предупреждение; это приводит к ошибке 500, которая опускает весь сайт до тех пор, пока вы не найдете и не исправите его. Директивы также должны отображаться в определенном порядке, с включенным механизмом перезаписи перед любым RewriteRule и правилами всего сайта перед правилами уровня страницы, или они плохо себя ведут способами, которые трудно отладить. Генератор кодирует этот порядок и синтаксис, поэтому вы не можете сделать это слегка неправильным.
На Toolz.dev поток отражает то, как вы на самом деле думаете о миграции. вы перечисляете каждый старый путь и его новый пункт назначения, выбираете, является ли перемещение постоянным или временным и является ли это точным путем или шаблоном, и, при необходимости, переключаете два правила для всего сайта, которые нужны почти каждому сайту. инструмент собирает весь файл в правильном порядке и помечает все подозрительное, например правило, которое перенаправляет путь к себе, прежде чем вставить его на свой сайт.
В чем разница между 301 и 302 перенаправление?
301 - это постоянное перенаправление, а 302 - временное, и поисковой системе это различие - это все. 301 сообщает браузерам и сканерам, что страница навсегда переместилась, а поисковые системы отвечают, перенося почти все старые URL's накопленные сигналы ранжирования на новый адрес и в конечном итоге удаляя старый URL-адрес из своего индекса. 302 сообщает им, что этот шаг является временным, поэтому они сохраняют исходный URL-адрес индексированным и ранжированным и рассматривают пункт назначения как резервный вариант, который исчезнет.
Выбор неправильного имеет реальные последствия. Используйте 302 для постоянного перемещения, и поисковые системы могут поддерживать ранжирование старого URL-адреса, в то время как ваша новая страница изо всех сил пытается накопить свой собственный авторитет, потому что сигналы никогда не передавались. Используйте 301 для чего-то действительно временного, например страницы, которая находится на низком уровне для обслуживания или сезонной целевой страницы, и вы можете навсегда потерять рейтинг оригинала, как только ситуация вернется. Эмпирическое правило простое: если старый URL-адрес никогда не возвращается, используйте 301; если это так, используйте 302.
Вот как они сравниваются по важным свойствам:
| Собственность | 301 Постоянный | 302 Временный |
|---|---|---|
| смысл | Пейдж двинулся навсегда | Пейдж временно находится в другом месте |
| Ранжирование сигналов | Перенесено на новый URL | Оставайтесь с исходным URL |
| Старый URL-адрес в индексе | В конце концов упал | сохраненный |
| Типичное использование | Редизайн, миграции, объединенные страницы | Техническое обслуживание, A/B-тесты, сезонные страницы |
| Кэширование браузера | Кэшируется агрессивно | Не кэшировано по умолчанию |
Генератор позволяет задавать статус по правилу, поэтому миграция, которая в основном является постоянными ходами с одним временным рекламным перенаправлением, представляет собой один смешанный список, а не два файла. Поскольку браузеры агрессивно кэшируют 301, стоит сделать их правильно с первого раза; неправильный 301 может сохраняться в браузере visitor's еще долго после того, как вы исправите сервер.
Когда я должен использовать redirect vers rewriteRule?
использовать Redirect директива о точном изменении пути один к одному и a RewriteRule когда нужно соответствовать шаблону. Redirect 301 /old-page /new-page является ли все правило для перемещения одной страницы, и это читается, трудно ошибиться, и обрабатывается Apache's mod_alias модуль. когда у вас есть несколько определенных страниц, каждая из которых переехала в определенное новое место, список Redirect линии - самый ясный и безопасный способ выразить это.
равняется RewriteRule зарабатывает свою сложность, когда одно правило должно поймать много URL-адресов. Если каждый пост под /blog/2023/ перешел на тот же путь без года, написав а Redirect строка для каждого поста будет состоять из сотен правил; один RewriteRule ^blog/2023/(.*)$ /blog/$1 [R=301,L] обрабатывает все из них, захватывая часть после года и повторно используя ее в пункте назначения. сила исходит от регулярных выражений и групп захвата, но так же и риск, потому что неэкранированный специальный персонаж или жадный узор может соответствовать гораздо большему, чем вы предполагали.
Генератор выбирает для вас правильную директиву в зависимости от типа совпадения, который вы выбираете по правилу: становятся точными правилами Redirect становятся линии и правила шаблонов RewriteRule строки, с движком перезаписи автоматически включается, когда присутствует какое-либо правило шаблона. Он также сохраняет две группы в правильном порядке на выходе. если вы новичок в написании самих шаблонов, Тестер регулярного выражения позволяет вам проверить шаблон по образцам URL-адресов, прежде чем доверять ему в перенаправлении, и именно так я подтверждаю, что группа захвата делает то, что я ожидаю.
Как заставить HTTPS в htaccess?
Для принудительной HTTPS вы добавляете условие перезаписи, которое проверяет, не является ли текущий запрос уже безопасным, после чего следует правило, которое перенаправляет на https версию того же хоста и пути. проверяет стандартная форма %{HTTPS} off а затем переписывает на https://%{HTTP_HOST}/$1 с 301, так что каждый простой-HTTP запрос постоянно обновляется до зашифрованной версии идентичного URL-адреса. Обслуживание сайта как по http, так и по https без этого перенаправления означает, что поисковые системы могут индексировать две версии каждой страницы, разделяя между ними сигналы ранжирования.
Тонкость - упорядочение Правило HTTPS должно выполняться до того, как какой-либо хост переписывает, например, добавляя или удаляя www, чтобы эти более поздние правила также приземлялись на защищенной схеме, а не отправляя посетителя с http на https, а затем через второе перенаправление Получение этого неправильного производит цепочки перенаправления, где один запрос отскакивает через два или три прыжка до прибытия, что медленнее для пользователей и разбавляет преимущество ранжирования перенаправления Генератор ставит правило HTTPS первым именно по этой причине.
Переключитесь на Force HTTPS в инструменте, и он вставляет правильное условие и правило в верхней части вывода, перед перенаправлениями вашей страницы и правилом www. Потому что HTTPS теперь является базовым ожиданием, а не дополнительным дополнительным, и браузеры все чаще помечают страницы http как небезопасные, это правило, которое я добавляю практически к каждому сайту. Оно естественным образом сочетается с каноническим правилом хоста, описанным ниже, и вместе они устанавливают сайт ровно по одному адресу для каждой страницы.
Как перенаправить www на не-www или наоборот?
Вы канонизируете префикс www с правилом перезаписи, которое проверяет хост и перенаправляет на выбранную вами версию. чтобы удалить www, вы сопоставляете хосты, которые начинаются с www., захватить остальное, и перенаправить на голый домен; чтобы добавить www, вы сопоставляете хосты, которые не начинаются с www. и перенаправить на префиксную версию В любом случае, цель состоит в том, чтобы каждая страница была доступна ровно на одном каноническом хосте, потому что обслуживать один и тот же контент на обоих www.example.com а example.com это классическая проблема дублированного контента, которая разделяет сигналы ранжирования так же, как это делает неразрешенное разделение http/https.
Нет преимущества SEO для www над не-www или обратное; важно, что вы выбираете один и обеспечить его последовательное. большие сайты исторически использовал www по техническим причинам вокруг файлов cookie и поддоменов, в то время как многие современные сайты опускают его для краткости. важно, что как только вы выбираете, каждая ссылка, каждый канонический тег, и каждый перенаправить точки в одной версии, так поисковые системы консолидируют все ваши полномочия на один хост, а не разделяют его.
Генератор предлагает единый параметр www с тремя вариантами: оставить его без изменений, форсировать www, или удалить www. Он пишет условие и правило сопоставления и помещает его после правила HTTPS так что два сотрудничают, а не цепочки. на каком бы хосте вы ни остановились, он также должен быть тем, что в ваших канонических тегах и вашей карте сайта, поэтому стоит генерировать ваш карта сайта с тем же каноническим хостом и объявлением правил сканирования в сопоставлении роботы.txt. Последовательность всех трех - это то, что заставляет канонизацию действительно сохраняться.
Работают ли эти перенаправления на nginx?
Нет. формат .htaccess специфичен для веб-сервера Apache и серверов, которые намеренно его эмулируют, в первую очередь LiteSpeed.Nginx вообще не читает файлы .htaccess; он полностью их игнорирует, поэтому вставка директив Apache в настройку Nginx ничего не делает.Nginx обрабатывает перенаправления со своими собственными return а rewrite директивы внутри server а location блоки в основной конфигурации, использующие другой синтаксис и другую модель оценки.
Это имеет значение, потому что удивительное количество проблем перенаправления приходит от применения правильного правила к неправильному серверу, Если ваши перенаправления кажутся проигнорированными независимо от того, что вы пишете, первое, что нужно проверить, это какой веб-сервер на самом деле обслуживает ваш сайт, потому что файл .htaccess на хосте Nginx инертен.Управляемые хосты WordPress, в частности, иногда запускают Nginx перед или вместо Apache, и там файл .htaccess, который вы тщательно отредактировали, не имеет никакого эффекта.
Генератор производит синтаксис Apache, который охватывает подавляющее большинство общего хостинга и любой хост, работающий под управлением Apache или LiteSpeed.Если вы находитесь на Nginx, логика правил переводится напрямую, постоянное перенаправление по-прежнему является 301 и канонический хост по-прежнему является каноническим хостом, но синтаксис должен быть переписан для директив Nginx's, что является заданием для вашего хоста и #39;s конфигурация, а не файл.htaccess. знание того, на каком сервере вы находитесь до начала, сохраняет путаницу, которую я наблюдал, проглатывая целыми днями.
Когда бы я действительно использовал это?
Миграции сайта - это основной случай Всякий раз, когда я перестраиваю сайт, будь то проект WordPress, переходящий на новые структуры URL или свежая сборка, заменяющая старую, каждый старый URL-адрес, у которого был трафик или обратные ссылки, нуждается в 301 в свой новый дом, или что трафик и полномочия испаряются в 404-е гг. перечисление этих сопоставлений и создание блока перенаправления за один проход, правильно упорядоченный и синтаксически чистый, гораздо безопаснее, чем ручное редактирование файла, который может привести сайт вниз по одной опечатке. правила шаблона обрабатывают целые разделы, которые перемещались как группа.
Обеспечение соблюдения HTTPS и канонического хоста - это повседневный случай. даже на сайте без перенаправлений на уровне страницы стоит добавить правила force-HTTPS и www, чтобы консолидировать сигналы ранжирования и соответствовать базовым показателям безопасности, которые сейчас ожидают браузеры. Я генерирую эти два правила практически для каждого нового сайта и вставляю их перед запуском, поэтому сайт является каноническим с первого дня, а не очищается позже, когда дублированные версии уже проиндексированы.
Уборка постфактум завершает его Старые перенаправления накапливаются, некоторые цепочка через два или три прыжка, и некоторые точки на страницах, которые с тех пор снова переместились. Восстановление всего блока из чистого списка, с помощью предупреждений цикла и формата, которые предоставляет инструмент, является хорошим способом сплющивать эти цепочки обратно к одиночным прыжкам. перенаправления - это один из уголков SEO на месте, и они сидят рядом с генератор метатегов и остальная часть набора инструментов на странице; более широкий пример сохранения такого рода утилит в браузере - это тот, который я делаю в браузере Руководство по набору инструментов для разработчиков веб-разработчика, и угол производительности в Руководство по инструментам повышения производительности разработчика, йо-
Являются ли мои данные URL-адреса конфиденциальными?
Да. каждое правило генерируется в JavaScript внутри вашего браузера. URL-адреса, которые вы вводите, ваш домен и ваша карта перенаправления никогда не передаются, не регистрируются и не сохраняются, и инструмент продолжает работать без сетевого соединения после загрузки страницы. Карта перенаправления фактически представляет собой диаграмму вашего сайта и структуры #39;s и его наиболее ценных страниц, и хотя это не секрет в том, как пароль, нет причин для того, чтобы он проходил через кого-то другого.'s сервер просто для того, чтобы собрать текстовый файл.
Поскольку работа происходит локально, вы можете планировать миграцию в автономном режиме, генерировать правила на ноутбуке без подключения и вставлять их, когда вы готовы, без какой-либо части вашего сайта и #39;s URL-структуры, выходящей из устройства. Этот подход с локальным переходом является тем же самым, что и каждый инструмент на Toolz.dev, и это означает, что инструмент так же удобен в использовании в самолете, как и на столе. Общий аргумент в пользу предпочтения инструментов на основе браузера, которые никогда не загружают ваши данные, - это тот, который я изложил в конфиденциальность данных в онлайн-руководстве по инструментам, йо-
часто задаваемые вопросы
В чем разница между 301 и 302 перенаправление?
301 - это постоянное перенаправление: оно сообщает браузерам и поисковым системам, что страница навсегда переместилась, и передает почти все старые сигналы ранжирования URL-адреса и № 39;s на новый. 302 - временный: он пересылает посетителей, но сигнализирует о том, что исходный URL-адрес должен сохранить свой рейтинг и может вернуться. Используйте 301 для постоянных ходов и 302 только тогда, когда изменение действительно временное.
Куда мне поместить файл htaccess?
Поместите файл .htaccess в корневую директорию вашего веб-сайта, обычно в папку, которая также содержит index.php или index.html. Объявленные там перенаправления применяются ко всему сайту. Имя файла начинается с точки и не имеет расширения, и Apache должен иметь разрешенный allowoverride для каталога, который большинство общих хостов настраивают по умолчанию.
Когда я должен использовать redirect vers rewriteRule?
Используйте директиву перенаправления mod_alias для простого изменения пути один к одному, например /старой страницы на /new-page. Используйте перезапись Mod_RewriteRewriteRule, когда вам нужно сопоставить шаблон, например, каждый URL-адрес в /blog/2023/ по тому же пути без года. Этот инструмент автоматически выдает редирект для точных правил и переписывание правил для правил шаблона.
Как заставить HTTPS в htaccess?
Включить принудительный HTTPS и генератор добавляет RewriteCond, который проверяет, выключен ли HTTPS, за которым следует RewriteRule, который перенаправляет на https версию того же хоста и путь с 301. Размещение этого правила перед другими перенаправлениями гарантирует, что каждый запрос будет обновлен до безопасного соединения в первую очередь, без цепочки через дополнительные переходы.
Работают ли эти перенаправления на nginx?
Нет. формат .htaccess специфичен для веб-сервера Apache и серверов, которые его эмулируют, например LiteSpeed.Nginx не читает файлы.htaccess и использует собственные директивы перезаписи и возврата в конфигурации сервера, поэтому вам нужно будет перевести эти правила в синтаксис Nginx. проверьте, на каком сервере работает ваш сайт, прежде чем устранять неполадки, игнорируемые перенаправления.
Не повредят ли эти перенаправления моему SEO?
При правильном использовании перенаправления защищают SEO, а не наносят ему вред. 301 сохраняет ранжирование перемещенной страницы, а канонизация HTTPS и www предотвращают разделение дубликатов версий ваших сигналов. Риски исходят от цепочек перенаправления, циклов или перенаправления на нерелевантные страницы, поэтому держите каждое правило указывающим непосредственно в наиболее подходящем пункте назначения.
Можно ли перенаправить сразу несколько URL-адресов?
Да. установите правило в режим шаблона и используйте регулярное выражение в поле источника с группами захвата, затем ссылайтесь на них в пункте назначения с $1, $2 и т. д. Например, ^blog/(.*)$ перенаправляется на /articles/$1 перемещает каждую страницу под /blog/на страницу соответствия под /articles/с единым правилом.
Являются ли мои данные URL-адреса конфиденциальными?
Да. правила генерируются в вашем браузере с помощью JavaScript. Ничто из введенного вами не загружается, не регистрируется и не сохраняется, и инструмент продолжает работать без подключения к Интернету после загрузки страницы. Карта перенаправления описывает структуру вашего сайта и #39;s, а с помощью инструмента на стороне клиента он никогда не покидает ваше устройство для сборки файла.
Создавайте свои перенаправления с помощью бесплатного Генератор перенаправления htaccess. Он пишет правила Apache 301 и 302, принудительное HTTPS и канонизацию www из простого списка, правильно упорядоченного, полностью в вашем браузере, ничего не загружаемого.



