Перенаправлять Все Поисковые ссылки, содержащие - на + на 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
предпочтительнее.
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
замена тогда не требуется.