У меня проблема с функцией PHP для сайта Wordpress.По состоянию на эту статью https://perishablepress.com/wordpress-infinite-duplicate-content/ Wordpress имеет проблему для бесконечной нумерации страниц.Поэтому мне нужно исправить это, перехватив пронумерованные URL-адреса и перенаправив их на родительский URL-адрес.
Я нашел этот код в Интернете, но немного изменил его для своих нужд.Он работает, как и ожидалось, но не перехватывает URL-адреса, содержащие ноль, а также не перенаправляет их непосредственно на URL-адрес с косой чертой (если его нет в извлеченном URL-адресе).
Из моих тестов видно,что PHP не перехватывает URL-адреса, содержащие 0
с параметром is_numeric
(вероятно, потому что 0 считается int
, но я не уверен).Я не знаком с PHP, поэтому делюсь этим с вами.
В остальном он работает отлично, перехватывает пронумерованные URL-адреса и перенаправляет на родительский URL-адрес.Конечно, я уже закрыл код в функции и загрузил в ловушку.Но я поделюсь только самим кодом только для лучшего пояснения:
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 = ($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);
// if page = 0 or 1, redirect permanently
if($ordinal) {
header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
}
header("Location: $redirect_url");
exit();
}
}
Я ожидаю, что пронумерованные URL, также содержащие 000000
или 01234
, также будут перенаправлены на его родительский источник.Спасибо за помощь.