Вопрос или проблема
Извините, не занимался этим с 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-показатели вашего сайта, сохранив все накопленные позиции и обеспечив более дружественные для пользователя адреса страниц.