wordpress偽靜態的原理

老朱教授發表於2017-10-08

首先起作用的是配置檔案的.htaccess 中的

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

這兩個的意思如果沒找到對應的檔案就訪問 index.php對應的檔案;舉個例就是 http://hcsem.com/wp 如果沒有wp這個資料夾就http://hcsem.com/index.php;然後通過內建的規則找到對應的動態地址;

內建規則;

WordPress部落格wp-includes資料夾下的taxonomy.php;中的 create_initial_taxonomies()函式建立文章分類category偽靜態的初始資料;

WordPress部落格wp-includes資料夾下的rewrite.php 是整個偽靜態的核心檔案中的 rewrite_rules()是生成偽靜態的總函式;他執行一次就是將所有偽靜態規則生成後寫入wp_options這個資料庫中option_name是rewrite_rules;這個函式中一排$date_rewrite = $this->generate_rewrite_rules 是生成各連結的規則;

$this->rules = array_merge($robots_rewrite, $old_feed_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite,  $post_rewrite, $this->extra_rules,$page_rewrite,$this->extra_rules_top);

上面這個就是將每個的規則合併起來;我移動了紅色的陣列;就是規則的順序從新排列了哈;讓他能適合我的靜態規則;這裡打個比喻;偽靜態的正冊表示式就相當 於在池塘裡面用漁網捕魚;最前面的網要大;而且最後有一些特殊要求;有的只能撈紅色的魚;有的只能撈黃色的鯉魚;記住;撈黃色鯉魚的網一定要在撈黃色魚網 的前面;不然黃色的鯉魚就被撈走了 就會出現黃色鯉魚撈不到;而有一種網是隻要是魚就能撈起來;所以這個一定要在最後面;去掉category的規則偽靜態規則有個事”(.+?)/?$” ; 懂正則的都知道這個能匹配所有訪問域名;所以我就改變了排列順序;把這個規則移動到了最後面;而單頁面的偽靜態有個規則是(.?.+?)(/[0-9]+)?/?$它也能匹配所有的;所以我就把這個改編了哈;加了個.html 偽靜態感覺更好;

link-template.php;是相當於根據內建的規則將網站中的連結的動態地址轉換成靜態地址;function _get_page_link 函式式替換單頁規則的;




本文轉自黃聰部落格園部落格,原文連結:http://www.cnblogs.com/huangcong/p/4770551.html,如需轉載請自行聯絡原作者


相關文章