Вопрос или проблема
Я совершенно не разбираюсь в регулярных выражениях. Я видел много примеров кода для перенаправления в файле .htaccess
, но примеры в основном для изменения дат. Остальные говорят использовать плагин Redirection, который я уже использую для простых единичных перенаправлений, но я не знаю регулярных выражений для изменения постоянной ссылки. У нас 743 поста, поэтому я не буду делать это по одному!
Вот старая и новая структура:
старая: /%post_id%/%postname%
новая: /%category%/%postname%
Любая помощь в том, что мне нужно добавить в файл .htaccess
или плагин перенаправления для этого конкретного изменения постоянной ссылки, будет очень полезна!
Вы можете сделать это, переписав старую URL-адресацию как запрос с помощью регулярных выражений. Вы можете сделать это либо по идентификатору поста, либо по имени поста. В этом случае я думаю, что имя поста, вероятно, более безопасно (избегает ложных совпадений с каким-либо другим путем, который может начинаться с чисел).
В пользовательских функциях, что-то вроде этого:
add_rewrite_rule( '^[0-9]+/(.*)/?', 'index.php?&name=$matches[1]','top' );
Похожие регулярные выражения будут работать в .htaccess или плагине перенаправления.
По сути, это переписывание URL-адреса как запроса и передача его в WordPress. WordPress использует это для поиска поста, а затем возвращает правильную постоянную ссылку, как определено в вашей структуре. По сути, это два перенаправления.
Я бы не стал этого делать, если только веб-сайт не был бы очень маленьким, с небольшим количеством страниц/постов, и не планировал бы роста. Это может быть немного лучше для SEO с точки зрения структуры ссылок, но могут быть потери в скорости.
Эта статья хорошо это объясняет, хотя рекомендация автора использовать год/дату далеко не оптимальна, и в плане скорости, и в плане SEO, я думаю.
Структура /%post_id%/%postname% так хороша, как это возможно для WordPress. Маленькие сайты с небольшим количеством страниц являются исключением — там используйте самую SEO-дружественную структуру ссылок — будь то только имя поста, или категория/имя поста, тег/имя поста и т.д. — в зависимости от вашей структуры тегов/категорий и “организации” контента (является ли “логическая карта сайта” допустимым английским термином?).
Ответ или решение
Совершая изменения в структуре постоянных ссылок для вашего сайта на WordPress, важно обеспечить правильную переадресацию, чтобы не потерять трафик и сохранить SEO-оптимизацию. В вашей ситуации, когда вы переходите с устаревшей структуры /%post_id%/%postname%
на новую /%category%/%postname%
, можно использовать регулярные выражения для настройки перенаправлений в файле .htaccess
или через плагин редиректов, такой как Redirection.
1. Решение через .htaccess
Вы можете добавить следующие строки в ваш файл .htaccess
, чтобы настроить перенаправление:
RewriteEngine On
RewriteRule ^([0-9]+)/(.+)$ /$2 [L,R=301]
Объяснение:
RewriteEngine On
– включает модуль обработки правил.RewriteRule ^([0-9]+)/(.+)$ /$2 [L,R=301]
– это правило осуществляет перенаправление. Оно ищет URL, который начинается с цифрового идентификатора ([0-9]+
), после чего идет постнейм ((.+)
), и перенаправляет на новый URL-адрес, состоящий из только постнейма (/$2
). КодR=301
указывает на постоянное перенаправление, что критично для SEO.
2. Использование плагина Redirection
Если вы хотите использовать плагин, в секции "Редиректы" задайте следующее правило:
- Источник URL:
^/([0-9]+)/(.+)$
- Целевой URL:
/$2
3. Реализация через кастомные функции WordPress
Если вы предпочитаете добавить правило в функции WordPress, используйте следующий код:
add_rewrite_rule('^[0-9]+/(.*)/?', 'index.php?&name=$matches[1]','top');
Заключение
Изменение структуры ссылок может влиять на SEO и достаточно верно имплементировать перенаправления — это основа успешного перехода. Оставайтесь осторожными, потому что неправильная переадресация может привести к потере трафика и ухудшению позиций в поисковой выдаче. Поэтому тщательно тестируйте новый setup и следите за аналитикой после внесения изменений.