Перенаправить все постоянные ссылки постов с “.html” на “/”

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

Как перенаправить все постоянные ссылки постов с .html на / в WordPress?

Чтобы было яснее, например, URL поста выглядит так:

http://example.com/%category%/%postname%.html

Который должен быть перенаправлен на:

http://example.com/news/%postname%/.html

Перенаправлять их по одному просто, но мне нужно правило для перенаправления всех постов. Моя текущая настройка .htaccess выглядит так:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Добавьте это в ваш .htaccess ниже строки # END WordPress:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST}
RewriteRule ^(.*)/(.*).html$ news/$2/.html [L,R=301]
</IfModule>

Это перенаправит домены, такие как:

http://example.com/category/post-name.html

На следующее:

http://example.com/news/post-name/.html

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

Перенаправление всех постов с окончанием .html на / в WordPress

Чтобы перенаправить все ссылки на посты из формата .html на формат http://example.com/news/%postname%/.html, потребуется внести изменения в файл .htaccess, а также правильно настроить правила переадресации. Данная задача, как правило, требует использования переопределения правил Apache, чтобы обеспечить корректное выполнение редиректов.

Шаг 1: Резервное копирование файла .htaccess

Прежде всего, перед внесением каких-либо изменений в файл .htaccess, рекомендуется создать его резервную копию. Это позволит вам восстановить исходное состояние в случае возникновения проблем.

Шаг 2: Обновление файла .htaccess

Используйте следующую структуру для редиректа в вашем файле .htaccess. Этот код необходимо добавить под секцией # END WordPress:

# BEGIN Custom Redirects
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*/)(.*)\.html$ /news/$2/.html [L,R=301]
</IfModule>
# END Custom Redirects

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

  1. RewriteEngine On: Эта директива включает механизм перезаписи, который позволяет использовать управляющие правила.

  2. RewriteCond %{HTTP_HOST} ^example.com$ [NC]: Данное условие проверяет, что хост соответствует вашему домену, в данном случае example.com. Флаг [NC] указывает, что проверка не чувствительна к регистру.

  3. RewriteRule ^(./)(.).html$ /news/$2/.html [L,R=301]:

    • ^(.*/)(.*)\.html$: Это регулярное выражение ищет всё, что заканчивается на .html, и захватывает его в группы. первая группа ((.*/)), содержит всё до последнего /, а вторая группа ((.*)) — все, что идет перед .html.
    • /news/$2/.html: Перенаправляет пользователя на новую структуру URL, подставляя имя поста из второй группы ($2).
    • [L,R=301]: Эти флаги указывают, что это окончательное правило (L) и тип переадресации — 301 (постоянная).

Шаг 3: Тестирование редиректа

После внесения изменений важно провести тестирование редиректа, чтобы убедиться, что он работает корректно. Для этого просто введите старый URL с окончанием .html в адресной строке браузера и проверьте, что вы попадаете по новому адресу.

Шаг 4: SEO-оптимизация

Постоянная переадресация (301) не только корректно направляет пользователей, но и передает часть SEO-ценности старых URL на новые. Это особенно важно для поддержания ваших позиций в поисковой выдаче. Убедитесь, что URL-структура вашей структуры контента удобна для пользователя и поисковых систем, что может положительно сказаться на индексации.

Заключение

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

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

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