WordPress安裝好以后,可以到后臺選擇你喜歡的wp主題模板(控制面板-外觀-添加新主題-選擇主題-安裝主題),主題安裝好以后相關(guān)文件的位置在/themes/themeName
。WordPress默認(rèn)的模板和主題雖然基本都是遵循W3C標(biāo)準(zhǔn)的,為seo打下了很好的基礎(chǔ),不過仍有很多地方seo優(yōu)化是做得不夠的,因此如果想讓自己的博客在搜索引擎上的排名上升得更快一些,從而能使更多的朋友和你一起分享和交流的話,在WordPress安裝好后最好盡快進(jìn)行WordPress優(yōu)化。網(wǎng)上看到很多用WP博客的朋友到后面才去做WordPress seo 優(yōu)化,那時包括網(wǎng)站架構(gòu)和文章的url鏈接結(jié)構(gòu)等等都已經(jīng)確定了,再要修改必然大費(fèi)周折。
WordPress優(yōu)化,提到最多的就是對url的鏈接結(jié)構(gòu)進(jìn)行優(yōu)化了,即url rewrite。url 重寫(rewrite)能夠?qū)討B(tài)網(wǎng)頁偽靜態(tài)化,生成網(wǎng)頁的固定鏈接,這點(diǎn)對搜索引擎友好是公認(rèn)的。WordPress官網(wǎng)的介紹是將默認(rèn)的“丑陋的鏈接”mod_rewrite成“漂亮的固定鏈接(Permalink:永久鏈接)”。url 重寫(rewrite)其實(shí)就是應(yīng)用了服務(wù)器技術(shù)和正則表達(dá)式。
一般Linux主機(jī)都能很好地支持Apache的mod_rewrite模塊,要URL 重寫生成永久固定鏈接也很簡單,只要修改WordPress根目錄下的.htaccess文件就可以了。但是如果你不巧選擇了空間提供商的windows主機(jī),在IIS下的WordPress url重寫就不一定能得到完美的支持。下面我將WordPress 如何在apache 和IIS環(huán)境下進(jìn)行url rewrite 配置做了一下整理,以及如何在WordPress管理后臺進(jìn)行url重寫的設(shè)置步驟。
一、Apache環(huán)境下的URL rewrite:
由于Apache自帶了mod_rewrite 模塊,要實(shí)現(xiàn)URL rewrite 生成偽靜態(tài)頁面很方便。
1. 確認(rèn)apache模塊已經(jīng)開啟,打開apache目錄下的conf/httpd.conf文件,找到LoadModule Rewrite_module libexec/mod_Rewrite.so 這一行,如果前面有 # 將其去掉;在命令行使用httpd -M查看當(dāng)前模塊情況.如有rewrite_module(shared)說明模塊已經(jīng)成功加載.
2. 配置目錄的allowoverwrite屬性,然后找到下面的代碼:
<Directory /> Options FollowSymLinks AllowOverride None <——將None改為ALL 保存httpd.conf 并重啟Apache </Directory>
如果設(shè)置了DocumentRoot,比如DocumentRoot "c:/www"
;則上面的default配置不要修改,而是修改這里的:
<Directory “c:/www”> # # Possible values for the Options directive are “None”, “All”, # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that “MultiViews” must be named *explicitly* — “Options All” # doesn’t give it to you. # # The Options directive is both complicated and important. Please see # http://httpd./docs/2.2/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be “All”, “None”, or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride All <--將None改為ALL--> # # Controls who can get stuff from this server. # Order allow,deny Allow from all <--將Deny改為Allow--> </Directory>
3. 創(chuàng)建.htaccess文件,新建一個txt文檔,將其命名為htaccess.txt,然后在文檔里寫入下面的代碼:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
保存為 htaccess.txt 上傳到網(wǎng)站根目錄下,最后將文件名修改為 .htaccess,這樣在apache環(huán)境下服務(wù)器端的url rewrite配置就完成了。
注1:如果你用的是虛擬主機(jī),一般成熟的Web 服務(wù)器應(yīng)用套件,都支持URL重寫的,比如drupal和joomla 。隱藏他們會默認(rèn)開啟mod_rewrite 模塊,或者你可以登陸到虛擬主機(jī)管理后臺進(jìn)行URL rewrite設(shè)置,也不需要你更改httpd.conf文件和.htaccess文件了,具體可以咨詢你的主機(jī)空間提供商。
注2:Apache服務(wù)器支持.htaccess文件,IIS是不支持的,在IIS環(huán)境下上傳了.htaccess文件也沒用。
二、IIS環(huán)境下的URL rewrite:
在windows主機(jī)IIS環(huán)境下,主機(jī)不支持mod_rewrite,有人在IIS7下測試過,WordPress有內(nèi)建的url rewrite模塊支持IIS7 。IIS 6 等的url rewrite可以有以下幾種解決辦法。
1. 第一種方法,可以在WordPress管理控制后臺設(shè)置 http:///index.php/年/月/日/日志名/ 這種形式的URL 重寫。這里的index.php不能去掉(請看下面第三大點(diǎn))。
2. 用ISAPI 實(shí)現(xiàn)url Rewrite
ISAPI 是英文“ Internet server application programming interface ”的縮寫,字面的翻譯為:英特網(wǎng)服務(wù)器應(yīng)用編程接口。實(shí)際上,ISAPI是微軟為了擴(kuò)展其主打WEB服務(wù)器產(chǎn)品IIS,為高級編程人員提供的一項(xiàng)特定技術(shù),使得編程人員可以在服務(wù)器級上使用底層的API(應(yīng)用編程接口)編程,擴(kuò)展IIS功能。編寫良好的ISAPI差不多可以接替IIS的全部工作,按照程序設(shè)計(jì)者的意圖完成WEB應(yīng)用。ISAPI編程與目前流行的其它web開發(fā)方式比較,其優(yōu)勢在于:性能、安全、全功能等方面。不少權(quán)威機(jī)構(gòu)做過評測,ISAPI在各項(xiàng)指標(biāo)上均領(lǐng)先于NSAPI(網(wǎng)景提供的一項(xiàng)服務(wù)器應(yīng)用接口技術(shù)),與目前被大量使用的web開發(fā)腳本語言,比如ASP,PHP,JSP等比較,根本不在一個數(shù)量級。對于程序員來說,直接使用“應(yīng)用編程接口”是一件令人興奮的事情。在GInfo虛擬網(wǎng)站平臺上開發(fā)網(wǎng)站,與“高效”等義。
ISAPI可用于支持URL rewrite(Url重寫)。我們可以自己將相關(guān)的dll文件上傳至指定目錄,并點(diǎn)擊添加 ISAPI篩選器 即可生效。理論上ISAPI可以支持任何系統(tǒng)的url rewrite,同時可以擴(kuò)展支持其他isapi篩選功能。
具體操作時,創(chuàng)建httpd.ini文件或修改httpd.ini的內(nèi)容,自定義RewriteRule的規(guī)則,然后上傳到指定目錄就可以了(注:以下RewriteRule重寫規(guī)則根據(jù)WordPress版本和url重寫方式的不同而有所不同,做些相應(yīng)的改動即可):
[ISAPI_Rewrite] # WordPress rewrite rules # /%year%%monthnum%%day%/%postname%/ RewriteRule /tag/(.*) /index\.php\?tag=$1 RewriteRule /(about-me)/ /index.php\?pagename=$1 RewriteRule /category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php\?category_name=$1&feed=$2 RewriteRule /category/?(.*)/ /index.php\?category_name=$1 RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php\?author_name=$1&feed=$2 RewriteRule /author/?(.*) /index.php\?author_name=$1 RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2 RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2 RewriteRule /page/(.*)/ /index.php\?paged=$1 RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&page=$5 RewriteRule /([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&day=$3&page=$4 RewriteRule /([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&page=$3 RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&feed=$5 RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/trackback/?$ /wp-trackback.php\?year=$1&monthnum=$2&day=$3&name=$4&tb=1
3. IIS 下用404頁面實(shí)現(xiàn)url 重寫
新建一個wp-404.php文件,寫入下面的代碼,然后上傳到服務(wù)器根目錄上:
<?php $qs = $_SERVER['QUERY_STRING']; $pos = strrpos($qs, '://'); $pos = strpos($qs, '/', $pos + 4); $_SERVER['REQUEST_URI'] = substr($qs, $pos); $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; include('index.php'); ?>
然后通過虛擬主機(jī)管理后臺軟件把404頁面指向wp-404.php。最后去WordPress后臺,設(shè)置一下Permalink(請看下面第三大點(diǎn)),刷新一下首頁,URL rewrite就可以正常工作了。在Windows 2003 + IIS6.0下試驗(yàn)成功。我覺得一些Linux主機(jī),如果不支持.htaccess的話,也可以使用這種辦法進(jìn)行URL重寫。有一個問題是不支持中文,postname和tag最好是英文的,中文的tag可以去設(shè)置一下tag slug。不過很多人懷疑用404頁面設(shè)置url rewrite 會使404頁面設(shè)置不能正常發(fā)送404 HTTP header,因此這種方法不建議使用。
三、WordPress管理后臺設(shè)置固定連接(url rewrite)
上面兩步在服務(wù)器端的url rewrite 支持解決了以后,就可以在WordPress管理后臺設(shè)置固定鏈接了。如果apache或IIS服務(wù)器端url rewrite規(guī)則沒有啟用,在控制后臺設(shè)置了固定鏈接后,將打開一個網(wǎng)頁不存在的404頁面。因?yàn)閃ordPress后臺設(shè)置固定鏈接,只是設(shè)置了你的WordPress博客架構(gòu)里的鏈接表現(xiàn)形式。具體的設(shè)置步驟如下:
1. 進(jìn)入管理后臺-設(shè)置-固定鏈接-常規(guī)設(shè)置,可以設(shè)置4種不同形式的固定鏈接,具體請見后臺。
2.注意:在永久固定鏈接中,不要出現(xiàn)日期和分類名稱,除了id,這些可以修改的變量參數(shù)最好都不要用在固定鏈接中,因?yàn)橐坏┬薷牧宋恼掳l(fā)表日期,老的固定鏈接將失效,同時一篇文章屬于多個分類時,將出現(xiàn)復(fù)制頁面。對搜索引擎不友好。不要將文件目錄設(shè)置得很深,比如年/月/日/分類名/文章名這種固定鏈接就太深了,給搜索引擎抓取頁面造成了一定的難度。另外固定鏈接中也不要出現(xiàn)中文字符,畢竟搜索引擎對中文字符的識別性不是很好,也會導(dǎo)致網(wǎng)址太長不美觀。
3.對于IIS,新增加一個頁面pages,每增加一個就要添加一個RewriteRule到httpd.ini文件中。
4.可以為分類和標(biāo)簽設(shè)置別名。文章和頁面也可以設(shè)置別名,不過只有在啟用了固定鏈接同時自定義中含有%postname%時,固定鏈接才能點(diǎn)擊設(shè)置。如果在默認(rèn)的鏈接狀態(tài)下,是無法為文章和頁面pages增加別名的。
其他關(guān)于wordpress url rewrite 的文章延伸閱讀:WordPress標(biāo)簽分頁url rewrite重寫規(guī)則 和 WordPress url重寫日期存檔文章的固定鏈接,以及ISAPI Rewrite實(shí)現(xiàn)IIS 301轉(zhuǎn)向(重定向跳轉(zhuǎn))。