首頁 >後端開發 >php教程 >apache Rewrite模組重寫功能開啟及偵測實現

apache Rewrite模組重寫功能開啟及偵測實現

伊谢尔伦
伊谢尔伦原創
2017-03-20 15:32:142296瀏覽

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下面,盡量更網站設定的:

....

定義在一起,方便維護。

三、測試Rewrite功能

以下為.htaccess測試實例:

# BEGIN
<IfModule mod_rewrite.c>
    RewriteEngine  on
    RewriteBase /
    RewriteRule .*$ 
</IfModule>
#END

測試方法,拷貝保存為.htaccess,上傳到網站根目錄下,訪問網站任何路徑頁面,均會跳到本博客,說明Rewrite已生效。

相關文章:

nginx下laravel框架rewrite的設定

windows伺服器下iis偽靜態設定方法(Mrew

windows伺服器下iis5D(DJrew

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn