【发布时间】:2019-08-28 14:36:42
【问题描述】:
我有一个关于 Wordpress 网站的 PHP 函数的问题。截至本文https://perishablepress.com/wordpress-infinite-duplicate-content/Wordpress 存在无限分页问题。所以我需要通过捕获编号的 URL 并将它们重定向到其父 URL 来解决这个问题。
我在网上找到了这段代码,但我根据自己的需要对其进行了一些修改。它按预期工作,但它不会捕获包含零的 URL,也不会直接重定向到带有斜杠的 URL(如果获取的 URL 中没有斜杠)。
从我的测试来看,PHP 似乎没有使用参数is_numeric 捕获包含0 的URL(可能是因为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)也被重定向到其父源。感谢您的帮助。
【问题讨论】:
-
000000是一个字符串,而不是一个数字。字符串可以以 0 开头,数字不能 -
好的,感谢您的回复,那么我该如何修改代码以满足 URL 中的 0 字符串?