如果我們是自己編譯的apache,那么啟用或禁用某個模塊應該說是比較容易的事,只要修改apache的配置文件就可以了。但是我們沒有理由不用已經做好的二進制文件進行安裝,使用apt-get要方便多了。
但是這樣的安裝,apache默認會啟用一部分模塊,一般情況下,它已經滿足了大部分的需求。但是我們的需求肯定是不能確定的如我們可能要利用apache實現重定向的功能,我們可能需要alias,rewrite模塊。
實際上在apache下有兩種類型的模塊,一種是事先編譯到apache中的,另一種是在你運行apache時載入的模塊你可以使用下列命令來檢查你的apache已經編譯了哪些模塊:
#apache2 -l
事實上,在apache2的安裝目錄下,有這樣的兩個目錄:
/etc/apache2/mods-enabled/ 已經被啟用的模塊
/etc/apache2/mods-available/ 當前系統中可用的模塊
這是在apache配置文件中一個片斷,很明顯它是用來載入各個被啟用的模塊及其配置文件,也就是位於/etc/apache2/mods-enabled/下的所有以.load 和.conf結尾的文件。
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
當然最后不要忘了重啟apache:apache2 force-reload
你可以使用下列命令來啟用或禁用模塊:
a2enmod 模塊名
a2dismod 模塊名
其實它的動作就是在/etc/apache2/mods-enabled/目錄創建或刪除一個模塊對應的鏈接文件。當然你也可以手工做這個動作了。
測試你的服務器是否支持rewrite功能,將下面的代碼保存為.htaccess文件,上傳到網站任一目錄下.
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule .*$ http://www.sohu.com
</IfModule>
如果可以打開的的網站..就說明你的rewrite模塊已經正常工作啦…
但如果不能打開該網站,那么可能存在下列問題。
#debian
a2enmod rewrite
#ubuntu
sudo a2enmod rewrite
指令后,即啟用了 Mod_rewrite 模塊。
另外,也可以通過將 /etc/apache2/mods-available/rewrite.load 連接到 /etc/apache2/mods-enabled/rewrite.load 來打開 Mod_rewrite 模塊。用指令操作就是:
#debian
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
#ubuntu
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
一點小提示
事實上,當在Debian or Ubuntu 中采用上述做法並重啟了 Apache 服務后,仍然無法正常 rewrite 網址。這里,還有一點需要注意的地方:
sudo vim /etc/apache2/sites-enabled/000-default
sudo vim /etc/apache2/apache2.conf
將其中的:
AllowOverride None
修改為:
AllowOverride All
上面的 /etc/apache2/sites-enabled/000-default 實則為 /etc/apache2/sites-available/default 的連接。而 AllowwOverride None 則會完全忽略 .htaccess 文件,自然其中所定義的 rewrite 規則也就不能生效了。
最后,別忘了使用下列指令來重啟 Apache:
#debian
/etc/init.d/apache2 restart
#ubuntu
sudo /etc/init.d/apache2 restart