給apache安裝mod_rewrite模塊
原文鏈接:http://opkeep.com/system/linux/apache_mod_rewrite.html
只是用來做參考,相關情況可跟據自己的需求進行修改
如果你的服務器apache還沒有安裝,那很簡單,在編譯apache時將mod_rewrite模塊編譯進去就可以,相關文檔可以在[url] www.gbunix.com[/url]中找到。如果你的apache已經安裝好了,現在只想編譯出mod_rewrite.so模塊,在apache 中進行加載,下面我們就介紹這個方法。
以Solaris操作系統進行舉例:
# PATH=/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin: $PATH
# export PATH
# which gcc
# which make
# find ./ -name mod_rewrite.c //在apache的安裝目錄中尋找mod_rewrite.c文件
# cd PATH/to/mod_rewrite.c //進入包含mod_rewrite.c文件的目錄
# apxs -c mod_rewrite.c //apxs請指定絕對路徑,在你當前正在使用apache的bin目錄里
# apxs -i -a -n mod_rewrite mod_rewrite.la
如果沒有什么錯誤的話,應該在你的apache的modules目錄中編譯出一個mod_rewrite.so文件。
編輯httpd.conf文件,確認httpd.conf中已經包含mod_rewrite.so的加載語句,如下:
LoadModule rewrite_module modules/mod_rewrite.so
這時,你的apache應該已經支持rewrite了。
=============================
apache已安裝完畢,手動添加mod_rewrite模塊
#find . -name mod_rewrite.c //在apache的源碼安裝目錄中尋找mod_rewrite.c文件
#cd modules/mappers/mod_rewrite.c //進入包含mod_rewrite.c文件的目錄
#/usr/share/apache-2.2.11/bin/apxs -c mod_rewrite.c //apxs應指定絕對路徑,在你當前正在使用apache的bin目錄里
#/usr/share/apache-2.2.11/bin/apxs -i -a -n mod_rewrite mod_rewrite.la
如果沒有什么錯誤的話,應該在你的apache的modules目錄中編譯出一個mod_rewrite.so文件。
編輯httpd.conf文件,確認httpd.conf中已經包含mod_rewrite.so的加載語句,如下:
LoadModule rewrite_module modules/mod_rewrite.so
這時,你的apache應該已經支持rewrite了。
注:完成之后,記得重啟服務器apache。
7.可能遇到的問題
httpd: Syntax error on line 54 of /usr/share/apache-2.2.11/conf/httpd.conf: Can’t locate API module structure `mod_rewrite_module’ in file /usr/share/apache-2.2.11/modules/mod_rewrite.so: /usr/share/apache-2.2.11/modules/mod_rewrite.so: undefined symbol: mod_rewrite_module
修改 httpd.conf,將
LoadModule mod_rewrite_module modules/mod_rewrite.so
改為
LoadModule mod_rewrite modules/mod_rewrite.so
如果出現這個錯誤
Syntax error on line 329 of /usr/local/apache2/conf/httpd.conf:
Can`t loacte API module staructure `mod_rewrite_module` in file
/usr/local/apache2/modules/mod_rewrite.so:/usr/local/apache2/lib/libapr-
0.so.0:undefined symbol:mod_rewrite_module
修改http.conf
原來:httpd.conf里面寫的mod_rewrite_module
改成 rewrite_module
如果重啟apache出現這個錯誤module rewrite_module is built-in and can`t be loaded
表示模塊是內建的,不用再調入,注釋掉
#LoadModule rewrite_module modules/mod_rewrite.so
#####################################################
檢查:
[root@www httpd-2.2.8]# ../bin/apachectl configtest
Syntax OK
這時,你的apache應該已經支持rewrite了。
注意下一步,配置虛擬主機的時候要類似如下設置才可以生效:
DocumentRoot /var/www/www/www.fastu.cn/
ServerName www.fastu.cn
Options FollowSymLinks
AllowOverride All
order allow,deny
Allow from all
如果AllowOverride設置為none的話,apache會不讀取網站的.htaccess文件!