在 SEO 中連結結構 (URL) 的最佳化也很重要,下面是一段來自百度官方的 SEO 最佳化建議:
簡潔美觀的 url 規則
(1) 唯一性網站中同一內容頁只與唯一一個 url 相對應,過多形式的 url 將分散該頁面的權重,並且目標 url 在系統中有被濾重的風險;
(2) 簡潔性動態引數儘量少,保證 url 儘量短;
(3) 美觀性使得使用者及機器能夠透過 url 即可判斷出頁面內容的主旨;
我們推薦如下形式的 url:url 儘量短且易讀使得使用者能夠快速理解,例如使用拼音作為目錄名稱;同一內容在系統中只產生唯一的 url 與之對應,去掉無意義的引數;如果無法保證 url 的唯一性,儘量使不同形式的 url301 到目標 url;防止使用者輸錯的備用域名 301 至主域名。
很多 SEO 大神也說過網站 URL 的層次儘量不要超過三層這樣有利於蜘蛛抓取內容,然而 WordPress 偽靜態後預設的 tag 頁面的連結結構為:http://域名/tag/tag-name/,而 tag 頁的分頁連結結構為:http://域名/tag/tag-name/page/page-id/這種形式,明顯的已經不符合百度所說的美觀簡短的結構了,那麼我麼可以刪掉連結中的一層來達到減少連結層次的效果,以去除連結中的/tag/這層為例,程式碼如下:
register_activation_hook(__FILE__,'no_tag_base_refresh_rules');add_action('created_post_tag','no_tag_base_refresh_rules');add_action('edited_post_tag','no_tag_base_refresh_rules');add_action('delete_post_tag','no_tag_base_refresh_rules');function no_tag_base_refresh_rules() { global $wp_rewrite; $wp_rewrite->flush_rules();}register_deactivation_hook(__FILE__,'no_tag_base_deactivate');function no_tag_base_deactivate() { remove_filter('tag_rewrite_rules', 'no_tag_base_rewrite_rules'); no_tag_base_refresh_rules();}add_action('init', 'no_tag_base_permastruct');function no_tag_base_permastruct() { global $wp_rewrite, $wp_version; if (version_compare($wp_version, '3.4', '<')) {="" $wp_rewrite="" -=""> extra_permastructs['post_tag'][0] = '%post_tag%'; } else { $wp_rewrite -> extra_permastructs['post_tag']['struct'] = '%post_tag%'; }}add_filter('tag_rewrite_rules', 'no_tag_base_rewrite_rules');function no_tag_base_rewrite_rules($tag_rewrite) { $tag_rewrite=array(); $tags=get_tags(array('hide_empty'=>false)); foreach($tags as $tag) { $tag_nicename = $tag->slug; if ( $tag->parent == $tag_id ) { $tag->parent = 0; } $tag_rewrite['('.$tag_nicename.')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?tag=$matches[1]&feed=$matches[2]'; $tag_rewrite['('.$tag_nicename.')/page/?([0-9]{1,})/?$'] = 'index.php?tag=$matches[1]&paged=$matches[2]'; $tag_rewrite['('.$tag_nicename.')/?$'] = 'index.php?tag=$matches[1]'; } global $wp_rewrite; $old_tag_base = get_option('tag_base') ? get_option('tag_base') : 'tag'; $old_tag_base = trim($old_tag_base, '/'); $tag_rewrite[$old_tag_base . '/(.*)$'] = 'index.php?tag_redirect=$matches[1]'; return $tag_rewrite;}add_filter('query_vars', 'no_tag_base_query_vars');function no_tag_base_query_vars($public_query_vars) { $public_query_vars[] = 'tag_redirect'; return $public_query_vars;}add_filter('request', 'no_tag_base_request');function no_tag_base_request($query_vars) { if (isset($query_vars['tag_redirect'])) { $tag = user_trailingslashit($query_vars['tag_redirect'], 'post_tag'); $taglink = trailingslashit(get_option( 'home' )) . $tag; status_header(301); header("Location: $taglink"); exit(); } return $query_vars;}
以上程式碼加到 functions.php,加好程式碼後到後點選一次固定連結即可,現在標籤 (tag) 頁面的連結就變成了以下這種結構:http://域名/tag-name/,而 tag 頁的分頁連結結構為:http://域名/tag-name/page/page-id/這種形式,並且訪問 http://域名/tag/tag-name/會自動 301 轉跳到 http://域名/tag-name/,訪問 http://域名/tag/tag-name/page/page-id/會 301 到 http://域名/tag-name/page/page-id/。