WordPress分頁偽靜態(tài)加html后綴,wordpress_PHP教程
Jul 12, 2016 am 08:50 AMWordPress分頁偽靜態(tài)加html后綴,wordpress
問題
當文章有分頁的時候,WordPress生成的永久鏈接是page.html/2的形式,前面一段是文章的$link,后面的數(shù)字代表分頁$number。那么問題來了,挖掘……不對,從邏輯上講這到底是個html文件還是一個目錄呢?
難看
在.html這個靜態(tài)文件后面加上一個/和數(shù)字簡直令人摸不著頭腦,這還只是其次,重要的是,我發(fā)現(xiàn)搜索引擎根本不收錄這樣奇怪的鏈接,這個真是無法接受,我寫的東西首尾都很重要,不能因為分個頁就被忽視了。
不收錄
拿這篇文章來看,搜索文章第一頁的內(nèi)容,谷歌收錄了:
搜索文章第二頁和第三頁的內(nèi)容,根本沒有收錄:
解決方案
于是我決定DIY WordPress的鏈接生成與解析規(guī)則。
思路
利用filter wp_link_pages_link 將分頁鏈接/123456重寫為page-[123456].html。
利用WordPress或者服務器的RewriteRule將page-[123456].html還原為/123456
添加鉤子redirect_canonical,防止WordPress從page-[123456].html到/123456的強行跳轉(zhuǎn)。
生成分頁html后綴鏈接
給WordPress主題加入:
class Rewrite_Inner_Page_Links { var $separator; var $post_rule; function __construct() { $this->separator = '/page-'; // (.+?)/([^/]+).html(/[0-9]+)?/? $this->post_rule = '(.+?)/([^/]+)(' . $this->separator . '([0-9]+))+.html/?$'; if (!is_admin() || defined('DOING_AJAX')) : add_filter('wp_link_pages_link', array($this, 'inner_page_link_format'), 10, 2); // for inner pages add_filter('redirect_canonical', array($this, 'cancel_redirect_for_paged_posts'), 10, 2); endif; if (is_admin()) : add_filter('rewrite_rules_array', array($this, 'pagelink_rewrite_rules')); endif; } /** * 修改post分頁鏈接的格式 * @param string $link * @param int $number * @return string */ function inner_page_link_format($link, $number) { if ($number > 1) { if (preg_match('%<a href=".*\.html/\d*"%', $link)) { $link = preg_replace("%(\.html)/(\d*)%", $this->separator . "$2$1", $link); } } return $link; } /** * 為新的鏈接格式增加重定向規(guī)則,移除原始分頁鏈接的重定向規(guī)則,防止重復收錄 * * 訪問原始鏈接將返回404 * @param array $rules * @return array */ function pagelink_rewrite_rules($rules) { $new_rule[$this->post_rule] = 'index.php?name=$matches[2]&page=$matches[4]'; return $new_rule + $rules; } /** * 禁止WordPress將頁面分頁鏈接跳轉(zhuǎn)到原來的格式 * @param string $redirect_url * @param string $requested_url * @return bool */ function cancel_redirect_for_paged_posts($redirect_url, $requested_url) { global $wp_query; if (is_single() && $wp_query->get('page') > 1) { return false; } return true; } } new Rewrite_Inner_Page_Links();
這樣就得到了將類似http://www.domain.com/program/tokyodaigaku.html/2/ 的分頁鏈接轉(zhuǎn)化為形如 http://www.domain.com/program/tokyodaigaku/page-2.html 的鏈接。
注意,我的偽靜態(tài)規(guī)則是/%category%/%postname%.html,如果你的規(guī)則不同,請自行修改代碼或者偽靜態(tài)規(guī)則。
重寫URL規(guī)則
如果不重寫規(guī)則的話,WordPress是不認識這個鏈接的,它以為有個目錄叫tokyodaigaku,里面有篇文章叫page-2.html,結果會給出一個無情的404錯誤:
利用服務器的重寫規(guī)則
如果是SAE的話,在config.yaml的第一行加入:
復制代碼 代碼如下:- rewrite: if ( !is_dir() && path ~ "(.+?)/([^/]+)(/page-([0-9]+))+.html/?$") goto "index.php?name=$2&page=$4"
如果不是的話,可以利用WordPress自帶的rewrite_rules:
登陸后臺——設置——固定鏈接:
什么也不用填,直接保存更改即可。代碼會自動在數(shù)據(jù)庫中硬性加入一條規(guī)則:
復制代碼 代碼如下:"(.+?)/([^/]+)(/page-([0-9]+))+.html/?$" => "index.php?name=$matches[2]&page=$matches[4]"
最終效果
無論是用http://www.domain.com/program/tokyodaigaku.html/2/ 還是 http://www.domain.com/program/tokyodaigaku/page-2.html,都可以訪問第二頁。
具體效果放在第二頁,順便測試一下分頁后綴效果
好了,基本功能已經(jīng)實現(xiàn)了,小伙伴們是否明白了呢,如有問題,請留言

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

有四種方法可以調(diào)整 WordPress 文章列表:使用主題選項、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代碼(在 functions.php 文件中添加設置)或直接修改 WordPress 數(shù)據(jù)庫。

Web開發(fā)設計是一個充滿潛力的職業(yè)領域。然而,這個行業(yè)也面臨著諸多挑戰(zhàn)。隨著越來越多的企業(yè)和品牌轉(zhuǎn)向網(wǎng)絡市場,Web開發(fā)者有機會展示他們的技能并在職業(yè)生涯中取得成功。然而,隨著對Web開發(fā)需求的持續(xù)增長,開發(fā)人員的數(shù)量也在增加,導致競爭日益激烈。但令人振奮的是,如果你具備天賦和意愿,你總能找到新方法來創(chuàng)造獨特的設計和創(chuàng)意。作為一名Web開發(fā)人員,你可能需要不斷尋找新的工具和資源。這些新工具和資源不僅能讓你的工作更加便捷,還能提升工作質(zhì)量,從而幫助你贏得更多的業(yè)務和客戶。Web開發(fā)的趨勢不斷變化,

導入 WordPress 源碼需要以下步驟:創(chuàng)建子主題以進行主題修改。導入源碼,覆蓋子主題中的文件。激活子主題,使其生效。測試更改,確保一切正常。

要使用 WordPress 主機建站,需要:選擇一個可靠的主機提供商。購買一個域名。設置 WordPress 主機帳戶。選擇一個主題。添加頁面和文章。安裝插件。自定義您的網(wǎng)站。發(fā)布您的網(wǎng)站。

您想將您的網(wǎng)站連接到Yandex網(wǎng)站管理員工具嗎?Google搜索控制臺、Bing和Yandex等網(wǎng)站管理員工具可幫助您優(yōu)化網(wǎng)站、監(jiān)控流量、管理robots.txt、檢查網(wǎng)站錯誤等。在本文中,我們將分享如何在Yandex網(wǎng)站管理員工具中添加您的WordPress網(wǎng)站來監(jiān)控您的搜索引擎流量。什么是Yandex?Yandex是一個位于俄羅斯的流行搜索引擎,類似于Google和Bing。您可以在Yandex中優(yōu)

您想了解如何在WordPress網(wǎng)站上使用cookie嗎?Cookie是在用戶瀏覽器中存儲臨時信息的有用工具。您可以使用此信息通過個性化和行為定位來增強用戶體驗。在本終極指南中,我們將向您展示如何像專業(yè)人士一樣設置、獲取和刪除WordPresscookie。注意:這是一個高級教程。它要求您精通HTML、CSS、WordPress網(wǎng)站和PHP。什么是Cookie?Cookie是用戶訪問網(wǎng)站時創(chuàng)建并存儲在用戶瀏覽

您需要修復WordPress中的HTTP圖片上傳錯誤嗎?當您在WordPress中創(chuàng)建內(nèi)容時,此錯誤可能會特別令人沮喪。當您使用內(nèi)置WordPress媒體庫將圖像或其他文件上傳到CMS時,通常會發(fā)生這種情況。在本文中,我們將向您展示如何輕松修復WordPress中的HTTP圖片上傳錯誤。WordPress媒體上傳過程中出現(xiàn)HTTP錯誤的原因是什么?當您嘗試使用WordPress媒體上傳器將文件上傳到Wo

要在 WordPress 上創(chuàng)建賬號,只需訪問其網(wǎng)站,選擇注冊選項,填寫注冊表,并驗證您的電子郵件地址。其他注冊方法包括使用 Google 賬號或 Apple ID。注冊的好處包括創(chuàng)建網(wǎng)站、獲得功能、加入社區(qū)和獲得支持。
