可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其實(shí)這是錯(cuò)誤的看法nginx也是支持.hatccess的哦,下面我來給各位總結(jié)一下配置方法。
其實(shí)nginx和.htaccess一點(diǎn)關(guān)系都沒有,只是一大堆人深受apache的影響覺得nginx應(yīng)該也要支持.htaccess功能。在nginx的配置中直接include .htaccess文件就好
include /站點(diǎn)目錄/.htaccess;
多么簡單,但是更讓人哭笑不得的是有大部分人根本就不知道nginx與apache是兩個(gè)不同webserver程序,于是不少人這么干:在 nginx里include .htaccess文件后,把a(bǔ)pache偽靜態(tài)規(guī)則的.htaccess上傳到站點(diǎn)根目錄下…無語。其實(shí)nginx可以include任何文件,而不僅 僅是.htaccess。
其實(shí)nginx這樣引用.htaccess跟apache還是有區(qū)別的:
1、nginx是啟動(dòng)引入,因?yàn)閚ginx特別注重效率,所以啟動(dòng)的時(shí)候會(huì)把所有的配置文件讀入內(nèi)存,然后啟動(dòng)個(gè)。如果發(fā)現(xiàn)有語法錯(cuò)誤,則啟動(dòng)失敗。而apache則是動(dòng)態(tài)引入,每次訪問站點(diǎn)都會(huì)重新載入配置。
2、nginx中的include是手動(dòng)添加,指定目錄。apache已經(jīng)把.htaccess作為它的一種特色機(jī)制,并且支持站所有子目錄都可以有.htaccess文件。
根際實(shí)際開發(fā)經(jīng)驗(yàn),很多人在早期都是用虛擬空間的多,而早期的虛擬空間基本都是apache做webserver,所以用戶不需要聯(lián)系空間商就能自 己做偽靜態(tài),而開源程序更是方便的拓展這一功能(ecshop,wordpress,phpcms等等)。并且維護(hù)也方便,只要覆蓋.htaccess就 好。
其實(shí),沒有幾個(gè)站點(diǎn)經(jīng)常去修改.htaccess,并且現(xiàn)在基本使用vps居多。
nginx 也可使用 .htaccess 文件實(shí)現(xiàn)多種功能。
在 nginx/nginx.conf的server{}中引入 .htaccess 文件:
include /vhosts/quany.info/.htaccess;
nginx完全可以支持.htaccess文件,請(qǐng)按如下操作:
1、新建一個(gè).htaccess文件,在里面輸入規(guī)則,如本站的規(guī)則:
代碼如下 | 復(fù)制代碼 |
# nginx rewrite rule |
保存文件并上傳到網(wǎng)站的根目錄。
2、修改虛擬主機(jī)配置
代碼如下 | 復(fù)制代碼 |
# ee /usr/local/etc/nginx/nginx.conf |
#freebsd 7.2默認(rèn)nginx默認(rèn)安裝的配置文件
在你需要添加偽靜態(tài)的虛擬機(jī)中的server塊中引入.htaccess文件
代碼如下 | 復(fù)制代碼 |
include /usr/www/.htaccess |
#請(qǐng)把這個(gè)改成你.htaccess文件的位置,
保存、退出重啟nginx
代碼如下 | 復(fù)制代碼 |
# /usr/local/etc/rc.d/nginx restart |
刷新看看,如果能正常器從證明你的rewrite rule的語法是正確
nginx的rewrite規(guī)則您可以直接放在主機(jī)配置中也可以放在獨(dú)立的文件用includeinru,存為獨(dú)立的文件時(shí),保存到一個(gè)新的文件 (文件名可以任意取,不過建議還是用.ht(注意有個(gè)“點(diǎn)”)開頭的文件名,因?yàn)檫@個(gè)服務(wù)器里面默認(rèn)過濾了外部對(duì).ht開頭的文件訪問:
代碼如下 | 復(fù)制代碼 |
location ~ /.ht { |