#wordpress #.htaccess #redirect #mod-rewrite
Вопрос:
Как перенаправить ВСЕ URL-адреса через .htaccess
, чтобы ВСЕ URL-адреса, заканчивающиеся на -text/
, перенаправлялись на (url)/
, удаляя -text
часть.
Например, ВСЕ URL-адреса ( с word -text/
) :
https://www.example.com/example-text/
Для
https://www.example.com/example/
Ответ №1:
Чтобы удалить -text
в конце URL-пути (перед последней косой чертой), вы можете сделать что-то вроде следующего в верхней части корневого .htaccess
файла (перед # BEGIN WordPress
разделом).
Например:
RewriteRule (. )-text/$ /$1/ [R=302,L]
Никаких других директив не требуется (так RewriteEngine On
как директива находится в следующем блоке кода WordPress).
$1
Обратная ссылка (в строке подстановки) содержит URL-путь, который предшествует -text/
в конце URL-пути.
Это относится к любому URL-адресу, который заканчивается на -text/
. Если это должно применяться только к URL-адресам, содержащим один сегмент URL-пути (как в вашем примере), вы можете изменить RewriteRule
шаблон следующим образом:
RewriteRule ^([^/] )-text/$ /$1/ [R=302,L]
Это будет совпадать /example-text/
(сегмент с одним путем), как и раньше, но не /foo/bar-text
будет совпадать (два сегмента пути).
Обратите внимание, что это 302 (временных) перенаправления. Если это должно быть постоянным, измените его на 301, но только после того, как вы проверите, что он работает так, как задумано. 301-е по умолчанию постоянно кэшируются браузером, что может сделать тестирование проблематичным.
Комментарии:
1. Спасибо, это работает отлично! : ) /поклон
Ответ №2:
- Это не совсем ваш ответ
- Но я поместил этот ответ здесь, чтобы, возможно, он решил проблему некоторых других людей
function forward_to_url(){ $self = $_SERVER["REQUEST_URI"]; //The string you want to find $itemCheck = "url"; $needle = $itemCheck. '/'; //Any Address You want redirect $forwardlink = '/'.preg_replace('/'.strtolower($itemCheck).'/','',strtolower($self)); $length = strlen($needle); $urlend= substr($self, -$length); if ($urlend == $needle or $urlend == $itemCheck) { wp_redirect($forwardlink, 301); } } add_action('template_redirect', 'forward_to_url');