Изменение структуры URL с помощью htaccess

Вопрос или проблема

Извините, не занимался этим с 2016 года и сейчас слегка озадачен. Нужна помощь с, вероятно, простым правилом mod_rewrite для файла .htaccess, чтобы перенаправить старые файлы, в которых больше нет конечного _числа.

Необходимо сделать 301 редиректы из такого формата, на тысячи старых новостных статей, сохраняя Name-Of-Story, но удаляя подчеркивание и все после ( _* ).

https://www.mysite.oooo/wire/Name-Of-News-Story_2013-04-0401-004/

на

https://www.mysite.oooo/wire/Name-Of-News-Story/

Спасибо за любые примеры для пробы. Размещая в файле .htaccess на сервере Apache. Делал некоторые вручную, потом обнаружил, что их 4800, так что редирект кажется гораздо умнее. Заранее спасибо. 🙂

Если все URI начинаются с wire/, вы можете использовать такое правило RewriteRule:

RewriteEngine On
RewriteRule ^wire/([a-zA-z0-9-]+)_.* https://%{HTTP_HOST}/wire/$1/ [L,R=301,NC]

Разместите это в начале вашего файла .htaccess и протестируйте.

Не стесняйтесь использовать ресурсы, такие как https://regex101.com/ и https://htaccess.madewithlove.com/, чтобы создать свои собственные правила и протестировать их.

Ответ или решение

Вопрос об изменении структуры URL с помощью файла .htaccess актуален для многих владельцев веб-сайтов, когда речь идет о массовых редиректах старых URL. В данном случае, задача заключается в том, чтобы перенаправить старые URL с определенной структурой на новые, более правильные URL без использования числовых окончаний. Это можно сделать с помощью mod_rewrite — мощного инструмента, доступного в Apache HTTP Server, который позволяет динамически изменять URL запросов.

Теория

Файл .htaccess — это конфигурационный файл для веб-серверов, работающих под управлением Apache. Он позволяет устанавливать правила и параметры, которые влияют на работу всего веб-сайта или его части. mod_rewrite — это модуль Apache, который позволяет изменять URL-адреса. Он широко используется для создания user-friendly (дружественных для пользователя) URL и для постоянных редиректов.

301 Redirect — это тип HTTP-ответа, который указывает, что страница перемещена на постоянной основе. Это важно для перенаправления старых URL на новые, поскольку 301 Redirect сохраняет SEO-рейтинги, передавая их на новую страницу.

Пример

Из вашего описания мы видим, что каждый URL имеет формат:

https://www.mysite.oooo/wire/Name-Of-News-Story_2013-04-0401-004/

Цель состоит в том, чтобы преобразовать его в:

https://www.mysite.oooo/wire/Name-Of-News-Story/

Для достижения этого требуется удалить часть после подчеркивания в URL и перенаправить на оставшуюся часть. Это можно сделать с помощью следующего правила в .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wire/([a-zA-Z0-9-]+)_[^/]+/$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/wire/%1/ [L,R=301,NC]

Объяснение применения правил

  • RewriteEngine On — эта строка активирует механизм переписывания URL, что позволяет использовать правила mod_rewrite.
  • RewriteCond %{REQUEST_URI} ^/wire/([a-zA-Z0-9-]+)_[^/]+/$ — это условие, которое проверяет, если URI соответствует определенному шаблону. Оно использует регулярное выражение для поиска в URI части ‘/wire/’, за которой следует последовательность символов и цифр, затем подчеркивание и любая строка, заканчивающаяся слэшем.
    • ([a-zA-Z0-9-]+) — это захватывающая группа, которая соответствует имени истории.
    • _ — соответствует символу подчеркивания после имени истории.
    • [^/]+/ — соответствует любой последовательности символов, за которой следует конечный слэш.
  • RewriteRule ^(.*)$ https://%{HTTP_HOST}/wire/%1/ [L,R=301,NC] — правило, которое собственно выполняет редирект. Оно использует первую захватывающую группу из условия (%1), чтобы создать новый URL без части после подчеркивания.
    • L — флаг, указывающий, что это последнее правило, применяемое к этому URl (варит покончить с редиректом).
    • R=301 — флаг, который задает тип редиректа (301, что соответствует постоянному редиректу).
    • NC — флаг NoCase, что делает правило нечувствительным к регистру.

Советы по тестированию

Перед внедрением какого-либо изменения в работу веб-сайта на реальном сервере, рекомендуется протестировать его в безопасной среде. Это можно сделать на stage-сервере или с использованием инструментов для тестирования .htaccess, таких как htaccess.madewithlove.com или regex101.com, где вы можете экспериментировать с регулярными выражениями и правилами переписывания. Убедитесь, что все редиректы работают как задумано и не вызывают ошибок 404 или зацикливания URL.

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

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

Оцените материал
Добавить комментарий

Капча загружается...