У меня есть функция, которая контролирует содержимое Wordpress с нумерацией страниц и перенаправляет пронумерованные URL-адреса на родительский URL-адрес.
Функция работает отлично, но я хочу, чтобы перенаправление 301 для пронумерованных URL-адресов, которые не имеют конечной косой черты, запускается непосредственно на косую черту URL. Например:
https://www.example.com/how-to-do-something/1111
следует немедленно перенаправить на
https://www.example.com/how-to-do-something/
В данный момент вместо этого работает перенаправление 301, но передается https://www.example.com/how-to-do-something
, а затем https://www.example.com/how-to-do-something/
.
Но, в то же время , эта проверка не должна делать недействительными нумерованные URL-адреса с окончательной косой чертой, которые уже хороши, например:
https://www.example.com/how-to-do-something/1111/
отлично перенаправить на https://www.example.com/how-to-do-something/
за один выстрел. Так что для них ничего не поделаешь.
функция следующая:
global $posts, $numpages;
$request_uri = $_SERVER['REQUEST_URI'];
$result = preg_match('%\/(\d)+(\/)?$%', $request_uri, $matches);
$ordinal = $result ? intval($matches[1]) : FALSE;
if(is_numeric($ordinal)) {
// a numbered page was requested: validate it
// look-ahead: initialises the global $numpages
setup_postdata($posts[0]); // yes, hack
$redirect_to = isset($ordinal) ? '/': (($ordinal > $numpages) ? "/$numpages/" : FALSE);
if(is_string($redirect_to)) {
// we got us a phantom
$redirect_url = get_option('home') . preg_replace('%'.$matches[0].'%', $redirect_to, $request_uri);
// redirect to it's parent 301
header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
header("Location: $redirect_url");
exit();
}
}
Как я могу добиться этого Проверка PHP от URL-адреса без конечной косой черты непосредственно до конечной косой черты без вызывает правило htaccess, которое я должен заставить косую черту? Спасибо за ваше терпение и время.