Вопрос или проблема
Как перенаправить все постоянные ссылки постов с .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
Объяснение правил:
-
RewriteEngine On: Эта директива включает механизм перезаписи, который позволяет использовать управляющие правила.
-
RewriteCond %{HTTP_HOST} ^example.com$ [NC]: Данное условие проверяет, что хост соответствует вашему домену, в данном случае
example.com
. Флаг[NC]
указывает, что проверка не чувствительна к регистру. -
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. Не забывайте периодически проверять работоспособность перенаправлений и обновлять настройки по мере необходимости.