abstract:Apache版本不同、操作系統(tǒng)不同,其配置文件命名、配置管理方式也經(jīng)常不同,比如安裝目錄可能是httpd,也可能是apache2,配置文件名及加載模塊方式也經(jīng)常不同,或許對apache官方而言是有規(guī)律的,但畢竟我們大部分用戶都不是網(wǎng)管,沒事整天配置apache,都是現(xiàn)用現(xiàn)找資料, 一般兩個文件路徑不對往往就火大了。進(jìn)入正題。Apache默認(rèn)Rewrite功能是禁用的,但是其Rewrite模塊是加載
Apache版本不同、操作系統(tǒng)不同,其配置文件命名、配置管理方式也經(jīng)常不同,比如安裝目錄可能是httpd,也可能是apache2,配置文件名及加載模塊方式也經(jīng)常不同,或許對apache官方而言是有規(guī)律的,但畢竟我們大部分用戶都不是網(wǎng)管,沒事整天配置apache,都是現(xiàn)用現(xiàn)找資料, 一般兩個文件路徑不對往往就火大了。進(jìn)入正題。
Apache默認(rèn)Rewrite功能是禁用的,但是其Rewrite模塊是加載的,所以,我們也不要只忙著寫.htaccess文件,總是不生效,先檢查一下我們的apache是否已經(jīng)識別我們的.htacess。
一、檢查確認(rèn)Rewrite模塊加載
本文測試是在CentOS 6系統(tǒng)上,路徑為:/etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
如果前面有注釋就去掉即可,重啟APACHE。
如果使用系統(tǒng)自帶命令安裝,如yum install或者apt-get install,在httpd.conf/apache2.conf下找不到
LoadModule rewrite_module modules/mod_rewrite.so
這一行,可以參考下面的設(shè)置來加載Rewrite模塊:
在終端中執(zhí)行
sudo a2enmod rewrite
指令后,即啟用了 Mod_rewrite 模塊。
另外,也可以通過將 /etc/apache2/mods-available/rewrite.load 連接到 /etc/apache2/mods-enabled/rewrite.load 來打開 Mod_rewrite 模塊。用指令操作就是:
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
二、檢查確認(rèn)目錄Rewrite打開
Rewrite庫加載不代表我們的.htaccess文件就能生效,還需要專門打開指定目錄的AllowOveride開關(guān),腳本如下:
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
其中AllowOverride只能定義在Directory這個Section里,具體用法可參考apache官方說明(下文鏈接),以上腳本一般放在httpd.conf或/etc/httpd/conf.d/vhost.conf下面,盡量更網(wǎng)站配置的:
<VirtualHost ...> ....</VirtualHost>
定義在一起,方便維護(hù)。
三、測試Rewrite功能
以下為.htaccess測試實(shí)例:
# BEGIN <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule .*$ </IfModule> #END
測試方法,拷貝保存為.htaccess,上傳到網(wǎng)站根目錄下,訪問網(wǎng)站任何路徑頁面,均會跳轉(zhuǎn)到本博客,說明Rewrite已生效。