可能很多朋友都常用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 rulerewrite ^(.*?)/article/.*?-(d+)-(d+).html$ $1/show.html?id=$2&page=$3 break;rewrite ^(.*?)/category/.*?-(d+)-(d+).html$ $1/list.html?id=$2&page=$3 break;rewrite ^(.*?)/tag/([^/]+)/?$ $1/tag.html?w=$2 break;rewrite ^(.*?)/tag/([^/]+)/(d+)$ $1/tag.html?w=$2&page=$3 break;# end nginx rewrite rule
保存文件并上傳到網站的根目錄。
2、修改虛擬主機配置
# ee /usr/local/etc/nginx/nginx.conf #freebsd 7.2默認nginx默認安裝的配置文件
在你需要添加偽靜態的虛擬機中的server塊中引入.htaccess文件
include /usr/www/.htaccess #請把這個改成你.htaccess文件的位置,
保存、退出重啟nginx
新聞熱點
疑難解答