Динамически изменить URL на SEO-дружественный через .htaccess?

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

Можно ли изменить структуру URL только для конкретного URL?

В настоящее время: https://www.website.com/brochure/?brochure_id=new-year-guide

Желаемый: https://www.website.com/brochure/new-year-guide

Я попробовал с:

RewriteRule brochure/([^&]+)/ brochure/?brochure_id=$1 [L]
RewriteRule brochure/([^&]+) brochure/?brochure_id=$1 [L]

РЕШЕНО:

Я использовал встроенную функцию WordPress add_rewrite_rule:

В functions.php

add_action('init', 'dcc_rewrite_tags');
function dcc_rewrite_tags() {
    add_rewrite_tag('% brochure_id%', '([^&]+)');
}

function custom_rewrite_rule() {
    add_rewrite_rule('^ brochure/([^/]*)/([^/]*)/?','index.php?page_id=99&brochure_id=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0);

page_id=99 – это ID страницы, связанной с моим шаблоном.

В шаблоне:

global $wp_query;
$brochure_slug = $wp_query->query_vars['brochure_id'];

ПРИМЕР 1 – ИНТЕРНЕТ-МАГАЗИН

Печальный оригинальный URL = site.com/page.php?category=2&product=54

Счастливый URL 🙂 = site.com/sandwiches/rueben-sandwich/

шаг 1:

Убедитесь, что все названия категорий и продуктов уникальны в вашей базе данных.

шаг 2:

Замените все ссылки на оригинальный URL на новый URL на вашем сайте.

шаг 3:

Используйте mod_rewrite в вашем файле .htaccess, чтобы разобрать элементы URL. Например:

RewriteEngine On

RewriteRule /(.*)/(.*)/$ page.php?category=$1&product=$2

Знак (.*) извлекает элементы и помещает их в переменные $1 и $2.

шаг 4:

Обновите ваш код в файле page.php, чтобы получить данные из базы данных по названию категории и продукта, а не по ID (поэтому названия должны быть уникальными). Например:

До:

"select * from database_table where categegory_id='$category' and product_id='$product'"

После:

"select * from database_table where categegory_name="$category" and product_name="$product""

ПРИМЕЧАНИЕ: Это всего лишь быстрый и простой пример, который не учитывает обработку ввода для безопасности (что вы должны сделать) или любые соединения таблиц, которые вам могут понадобиться на вашем сайте.

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

Изменение URL на SEO-дружественный с помощью .htaccess

Динамическое изменение структуры URL на более SEO-дружественные варианты является важной задачей, особенно для сайтов, стремящихся улучшить свои позиции в поисковых системах. В вашем примере вы хотите преобразовать URL https://www.website.com/brochure/?brochure_id=new-year-guide в https://www.website.com/brochure/new-year-guide. Давайте разберем, как этого добиться с помощью файла .htaccess, а также представим другие подходы.

Работа с файлом .htaccess

Файл .htaccess позволяет настраивать параметры веб-сервера Apache, включая переписывание URL. Для вашей задачи необходимо применить следующие правила переписывания:

  1. Включение модуля переписывания: Убедитесь, что модуль mod_rewrite включен на вашем сервере.

Для этого добавьте следующую строку в начало вашего .htaccess файла:

RewriteEngine On
  1. Создание правила переписывания: Вам необходимо написать правило, которое преобразует новый формат URL в старый. Вот пример того, как это может выглядеть:
RewriteRule ^brochure/([^/]+)/?$ /brochure/?brochure_id=$1 [L,QSA]
  • ^brochure/([^/]+)/?$ — это регулярное выражение, которое захватывает часть URL после /brochure/ и помещает ее в переменную $1.
  • /brochure/?brochure_id=$1 — это целевая точка, куда будет перенаправлен пользователь.
  • [L,QSA] — флаги, где L указывает, что это последнее правило, и не будет проверяться больше правил, а QSA добавляет параметры запроса к URL, если они существуют.

Пример использования в WordPress

В вашем случае вы также указали, что используете WordPress. Для динамического изменения URL в WordPress можно воспользоваться функцией add_rewrite_rule.

Вот пример кода, который вы уже использовали:

add_action('init', 'dcc_rewrite_tags');
function dcc_rewrite_tags() {
    add_rewrite_tag('%brochure_id%', '([^&]+)');
}

function custom_rewrite_rule() {
    add_rewrite_rule('^brochure/([^/]*)/?','index.php?page_id=99&brochure_id=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule');

Указания по использованию

  • Шаг 1: Убедитесь, что все названия брошюр уникальны в вашей базе данных, чтобы избежать конфликтов.
  • Шаг 2: Проверьте, чтобы все ссылки на старый формат были обновлены на новую версию URL.
  • Шаг 3: После внесения изменений вам может понадобиться обновить постоянные ссылки в админке WordPress (Настройки -> Постоянные ссылки) для сброса правил переписывания.

SEO-оптимизация

  • Используйте понятные и запоминающиеся URL.
  • Избегайте использования параметров, которые не добавляют ценность, так как они могут негативно сказываться на SEO.
  • Проверьте наличие неработающих ссылок и настроите редиректы, если это необходимо.
  • Убедитесь, что страницы загружаются быстро и оптимизированы под мобильные устройства, так как это также является важным фактором ранжирования.

Заключение

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

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

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