windows主機(jī)服務(wù)器的網(wǎng)站以搭建在虛擬主機(jī)上,當(dāng)我們用習(xí)慣了apache下的.htaccess的時(shí)候,很難想象windows主機(jī)上怎么實(shí)現(xiàn)它的強(qiáng)大功能。實(shí)際上windows主機(jī)服務(wù)器上的虛擬主機(jī)可以用httpd.ini文件來充當(dāng).htaccess文件在Linux主機(jī)空間的作用,不過要令你失望的是,httpd.ini的功能完全沒有.htaccess那么強(qiáng)大,規(guī)則上沒有那么豐富,細(xì)節(jié)上也有很大的不同。如果你在win主機(jī)上安裝了wordpress,那么對(duì)付wordpress固定鏈接的設(shè)置將是一件令你頭痛的事。本文致力解決這一問題,并盡量詳盡。
一、httpd.ini實(shí)現(xiàn)域名301重定向:
[ISAPI_Rewrite]
RewriteCond Host: ^utubon\.com$
RewriteRule (.*) http\://www\.utubon\.com$1 [R,I,L]
這不是本文的重點(diǎn),只不過跟本文的SEO有點(diǎn)關(guān)系,順帶寫上,一筆帶過。
二、httpd.ini實(shí)現(xiàn)wordpress固定鏈接:
[ISAPI_Rewrite]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
RewriteRule /wap(.*) /wap$1 [L]
RewriteRule /content/uploads/(.*) /content/uploads/$1 [L]
RewriteRule /wp-(.*) /wp-$1 [L]
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]
將上面的代碼保存在一個(gè)名叫httpd.ini的文本文件中(用txt文件直接修改文件名),上傳到web根目錄,這樣win主機(jī)下就能實(shí)現(xiàn)wordpress的固定鏈接了,并且你可以放心大膽的將后臺(tái)設(shè)置固定鏈接中的“/index.php/”去除掉。
如果你在linux主機(jī)下了解過.htacess文件的使用,那么應(yīng)該對(duì)此段代碼不會(huì)陌生。只不過在httpd.ini中需要排除/sitemap.xml等類似的單獨(dú)頁面,如果不在加上這些相關(guān)語句,那么你的wordpress將會(huì)返回給用戶“頁面未找到”的提示,原因正如你想到的一樣,因?yàn)槟阕隽薘ewriteRule /(.*) /index.php/$1 [L]的規(guī)定,所以當(dāng)你訪問/sitemap.xml實(shí)際上已經(jīng)重寫到/index.php/sitemap.xml了,自然沒有該頁面。如果你還不明白不清楚語句的意思,你可以看本文參考來源,或到網(wǎng)上尋找.htaccess的教程方只其中奧妙。
雖然網(wǎng)上還有其他的辦法,但本人認(rèn)為這是最好的方法。在上傳了httpd.ini之后,雖然實(shí)現(xiàn)了最初的固定鏈接網(wǎng)址形式,但有一個(gè)不太讓人容易注意到的地方是,當(dāng)你點(diǎn)擊某個(gè)標(biāo)簽時(shí),會(huì)發(fā)現(xiàn)找不到該頁,原因是你的網(wǎng)址中含有中文字符,需要做如下修改:
修改網(wǎng)站目錄下wp-include/classes.php文件(最新3.1版需要修改的文件是wp-include/class-wp.php)
$pathinfo = $_SERVER['PATH_INFO'];修改為$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], 'UTF-8', 'GBK');
$req_uri = $_SERVER['REQUEST_URI'];修改為$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], 'UTF-8', 'GBK');
三、解決?p=postid形式的文章短連接仍然可以訪問的問題
你可能對(duì)這種rewrite規(guī)則比較熟悉,國內(nèi)的程序基本上都是用這種Rewrite。請(qǐng)注意這時(shí)WP的內(nèi)部過程完全不同,WP的query vars值均來源于$_GET(Apache直接rewrite生成的), 但Request_uri或Path_Info仍會(huì)被解析并且生成的$perma_query_vars完全正確,只是不會(huì)被用于query vars而已。因?yàn)?_GET優(yōu)先級(jí)高于對(duì)url rewrite獲得的值,因此在windows下IIS的httpd.ini里加入rewrite規(guī)則,后臺(tái)permalink設(shè)置為默認(rèn)后rewrite后友好地址仍可以訪問。為了使網(wǎng)站更有利于SEO,減少不同網(wǎng)址卻內(nèi)容相同的情況,我們對(duì)文章頁、分類頁、單獨(dú)頁面做如下處理:
在wordpress主題文件頭部文件或能夠被全局訪問的文件內(nèi)加入如下代碼
Copyright since 2005,問鼎科技(58wd.com) 服務(wù)電話:400-666-4165 地址:成都市IT大道蜀清路239號(hào) 蜀ICP備10202221號(hào)