原來使用Apache2.2,只要開啟使用rewrite模塊,在Drupal中:管理(admin)-站點(diǎn)設(shè)置(settings)-簡潔鏈接(Clean URLS)里,Drupal會(huì)自動(dòng)檢測可以使用簡介鏈接,選擇啟用(enable),就會(huì)使用默認(rèn)的.htaccess文件來完成簡潔鏈接的功能。
但是,當(dāng)我把Apache2.2換為Lighttpd1.4.xx后,Drupal無法自動(dòng)檢測是否可以使用簡潔鏈接功能。google一陣,發(fā)現(xiàn)解決的方法其實(shí)很簡單。
首先,修改Lighttpd配置文件,比如我使用Lighttpd目錄下的conf/lighttpd-inc.conf配置文件,那么就修改這個(gè)文件,開啟rewrite模塊:
server.modules = (
### 其他模塊

### rewrite模塊
"mod_rewrite"
)
參考Drupal默認(rèn)的.htaccess文件里rewrite模塊部分:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
看到?jīng)]有,只有一條RewriteRule,就是它了。那么怎么樣把它“移植”到Lighttpd的配置文件里呢?很簡單,在Lighttpd配置文件里添加:
#### url handling modules (rewrite, redirect, access)
url.rewrite = ( "^/cms/(.*)$" => "/cms/index.php?q=$1" )
然后進(jìn)入Drupal目錄,修改sites/default/settings.php文件,在末尾處添加:
/**
* Clean URL
**/
$conf['clean_url']=1;
現(xiàn)在訪問http://wind/cms/,發(fā)現(xiàn)大部分功能都正常,比如用戶登錄。但是頁面很粗糙,多媒體文件(圖片什么的)和CSS排版都沒有加載,于是還需要增加一個(gè)RewriteRule,放在"^/cms/(.*)$" => "/cms/index.php?q=$1"的前面,現(xiàn)在的RewriteRule配置是這樣子的:
#### url handling modules (rewrite, redirect, access)
url.rewrite = ( "^/cms/(.*.gif|.*.png|.*.jpg|.*.pdf|.*.js|.*.css)" => "/cms/$1", "^/cms/(.*)$" => "/cms/index.php?q=$1" )
現(xiàn)在訪問http://wind/cms/,一切正常了哦!
WordPress的設(shè)置就更加簡單了,依然查看WordPress目錄下的.htaccess文件,查看Apache下WordPress的RewriteRule,在Lighttpd的rewrite模塊配置里添加一條RewriteRule,最后Drupal/WordPress的rewrite模塊配置是類似這樣子的:
#### url handling modules (rewrite, redirect, access)
url.rewrite = ( "^/blog/(archives|categories|comments|feed)/" => "/blog/index.php", "^/cms/(.*.gif|.*.png|.*.jpg|.*.pdf|.*.js|.*.css)" => "/cms/$1", "^/cms/(.*)$" => "/cms/index.php?q=$1" )
哈哈,是不是很簡單呢?不過要注意,在rewrite模塊配置之前請不要設(shè)置server.error-handler-404,不然只顯示404錯(cuò)誤哦~
(注:我是在公司局域網(wǎng)里架設(shè)的服務(wù)器,主機(jī)域名為http://wind/,www根目錄為G:\pub。WinXP下Apache2/Lighttpd+PHP5+MySQL5做服務(wù)器。Lighttpd使用FastCGI。Drupal目錄為G:\pub\cms,WordPress目錄為G:\pub\blog。)