Перенаправлять Все Поисковые ссылки, содержащие - на + на Wordpress


Я удалил все свои теги wordpress через phpmyadmin, и большая часть содержимого моего поста содержит ссылки на теги , теперь я перенаправил все ссылки на теги в поиск с помощью .htaccess,

Т.Е.

example.com/tag/stack-exchange/ будет перенаправлен на example.com/search/stack-exchange/

На некоторых ссылках это сработало нормально, но я заметил, что некоторые ссылки не выводят заголовок сообщения из-за знака - на URL-адресе ссылки поиска, если я заменю - на + он найдет содержимое моего поста (заголовок), но если это -, подпишите URL-адрес ссылки, он не извлекает содержимое моего поста при поиске.

Пожалуйста, я могу любым способом перенаправить все URL-адреса поиска, содержащие - на URL-адрес ссылки, на +

Т.е. перенаправление example.com/search/stack-exchange/ на example.com/search/stack+exchange/

.htaccess предпочтительнее.

Author: MrWhite, 2018-09-22

1 answers

Вы можете сделать что-то вроде следующего в верхней части вашего файла .htaccess, чтобы заменить все - на +, которые встречаются после сегмента пути /search/ в запрошенном URL-адресе:

RewriteRule ^(search/[^-]*)-([^-]*-.*) /$1+$2 [N]
RewriteRule ^(search/[^-]*)-([^-]*)$ /$1+$2 [R=302,L]

Первые RewriteRule циклы (внутренние), пока все, кроме 1 дефиса, не будут заменены на +. Второй RewriteRule запускает внешнее перенаправление, заменяя последний дефис. В вашем примере, где есть только 1 дефис, перенаправление произойдет немедленно.

Измените 302 (временно) перенаправление на 301 (постоянный) - если таково намерение - только после того, как вы проверите, что он работает нормально.

ОБНОВЛЕНИЕ: Если у вас проблема с циклом перезаписи (и, следовательно, без перенаправления), когда в запрошенном URL-адресе есть несколько дефисов (-), то, вероятно, у вас проблема с добавлением PATH_INFO к целевому URL-адресу на каждой итерации цикла. Это можно исправить с помощью флага DPI (Удалить информацию о пути) в первой директиве RewriteRule. Для пример:

RewriteRule ^(search/[^-]*)-([^-]*-.*) $1+$2 [N,DPI]
RewriteRule ^(search/[^-]*)-([^-]*)$ /$1+$2 [R=302,L]

Префикс косой черты на первом RewriteRule замена тогда не требуется.

 1
Author: MrWhite, 2018-09-23 11:19:28