簡體   English   中英

如何在PHP中獲取包含零的編號URL?

[英]How can i fetch numbered URLs that contain zero in PHP?

我有一個關於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(也包含00000001234 )也將重定向到其父源。 謝謝您的幫助。

is_numeric()調用'0000'和'0123'之類的值將在php中返回true,並且您將通過intval()將其解析為0和123。

我注意到您已將博客文章中的原始代碼從更改為

// if page = 0 or 1, redirect permanently
($ordinal < 2) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
} else {
    header($_SERVER['SERVER_PROTOCOL'] . ' 302 Found');
}

// if page = 0 or 1, redirect permanently
if($ordinal) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
}

注釋不再與功能匹配,也許是因為您始終希望使用301功能嗎?

我相信您的代碼將以不同的方式處理0000序數,因為如果檢查,它將評估為false。

如果我正確地理解了您想要的內容,則可以嘗試徹底刪除該內容,然后查看是否可以解決您的問題。 如果不能,您能否提供一些顯示問題的完整URL?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM