單獨編譯apache的rewrite模塊

單獨編譯apache的rewrite模塊

裝好了一個基於Modx的網站

在IE裏面訪問時,出來的頁面是apache內部錯誤,請聯繫管理員

查看apache的錯誤日誌裏面內容如下

[Tue Nov 25 23:46:41 2008] [alert] var/www/xxx/.htaccess: Invalid command 'RewriteEngine', perhaps mis-spelled or defined by a module not included in the server configuration

根據.htaccess的內容,需要apache支持rewrite模塊

我先把.htaccess文件重命名(即不啓用rewrite模塊),發現是可以訪問頁面的,所以是我的apache編譯時沒有rewrite模塊引起的問題

現在單獨編譯這個模塊

進入apache的源碼目錄

# cd httpd-2.0.59

# cd modules

#cd mappers/

# ls

會列出很多文件,其中mod_rewrite.c  這個就是rewrite模塊的源碼文件

# /usr/local/apache2/bin/apxs -i -a -c ./mod_rewrite.c

輸出如下

/usr/local/apache2/build/libtool --silent --mode=compile gcc -prefer-pic  -DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache2/include  -I/usr/local/apache2/include   -I/usr/local/apache2/include   -c -o ./mod_rewrite.lo ./mod_rewrite.c && touch ./mod_rewrite.slo

/usr/local/apache2/build/libtool --silent --mode=link gcc -o ./mod_rewrite.la  -rpath /usr/local/apache2/modules -module -avoid-version    ./mod_rewrite.lo

/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' ./mod_rewrite.la /usr/local/apache2/modules

/usr/local/apache2/build/libtool --mode=install cp ./mod_rewrite.la /usr/local/apache2/modules/

cp ./.libs/mod_rewrite.so /usr/local/apache2/modules/mod_rewrite.so

cp ./.libs/mod_rewrite.lai /usr/local/apache2/modules/mod_rewrite.la

cp ./.libs/mod_rewrite.a /usr/local/apache2/modules/mod_rewrite.a

ranlib /usr/local/apache2/modules/mod_rewrite.a

chmod 644 /usr/local/apache2/modules/mod_rewrite.a

PATH="$PATH:/sbin" ldconfig -n /usr/local/apache2/modules

----------------------------------------------------------------------

Libraries have been installed in:

   /usr/local/apache2/modules

If you ever happen to want to link against installed libraries

in a given directory, LIBDIR, you must either use libtool, and

specify the full pathname of the library, or use the `-LLIBDIR'

flag during linking and do at least one of the following:

   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable

     during execution

   - add LIBDIR to the `LD_RUN_PATH' environment variable

     during linking

   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag

   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

----------------------------------------------------------------------

chmod 755 /usr/local/apache2/modules/mod_rewrite.so

[activating module `rewrite' in /usr/local/apache2/conf/httpd.conf]

由輸出可以看到rewrite模塊已經在httpd.conf中激活了,查看確認

# vi /usr/local/apache2/conf/httpd.conf

可以看到

# LoadModule foo_module modules/mod_foo.so

LoadModule php5_module        modules/libphp5.so

LoadModule rewrite_module     modules/mod_rewrite.so

重啓apache生效

把.htaccess文件恢復爲這個文件名,訪問正常顯示頁面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章