Apache版本不同、作業系統不同,其設定檔命名、組態管理方式也經常不同,比如安裝目錄可能是httpd,也可能是apache2,設定檔名及載入模組方式也經常不同,或許對apache官方而言是有規律的,但畢竟我們大部分使用者都不是網管,沒事整天配置apache,都是現用現找資料, 一般兩個檔案路徑不對往往就火大了。進入正題。
Apache預設Rewrite功能是禁用的,但是其Rewrite模組是載入的,所以,我們也不要只忙著寫.htaccess檔案,總是不生效,先檢查一下我們的apache是否已經識別我們的.htacess。
一、檢查確認Rewrite模組載入
本文測試是在CentOS 6系統上,路徑為:/etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
如果前面有注釋就去掉即可,重啟APACHE。
如果使用系統內建命令安裝,如yum install或者apt-get install,在httpd.conf/apache2.conf下找不到
LoadModule rewrite_module modules/mod_rewrite.so
這一行,可以參考下面的設定來載入Rewrite模組:
在終端中執行
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
二、檢查確認目錄Rewrite開啟
Rewrite庫載入不代表我們的.htaccess檔案就能生效,還需要專門開啟指定目錄的AllowOveride開關,指令碼如下:
<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下面,盡量更網站配置的:
<VirtualHost ...> ....</VirtualHost>
定義在一起,方便維護。
三、測試Rewrite功能
以下為.htaccess測試執行個體:
# BEGIN<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule .*$ </IfModule>#END
測試方法,拷貝儲存為.htaccess,上傳到網站根目錄下,訪問網站任何路徑頁面,均會跳轉到本部落格,說明Rewrite已生效。
相關文章:
nginx下laravel架構rewrite的設定
windows伺服器下iis偽靜態設定方法(附rewrite偽靜態組件)
Nginx詳細的Rewrite偽靜態規則步驟