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