使Nginx服務器支持.htaccess的方法

使Nginx服務器支持.htaccess的方法

這篇文章主要介紹了使Nginx服務器支持.htaccess的方法,.htaccess配置文件設置是Apache上的好東西,現在我們讓Nginx服務器也能使用它,需要的朋友可以參考下

可能很多朋友都常用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 文件實現多種功能。

include /vhosts/quany.info/.htaccess;

nginx完全可以支持.htaccess文件,請按如下操作:

1、新建一個.htaccess文件,在裏面輸入規則,如本站的規則:

# nginx rewrite rule
rewrite ^(.*?)/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默認安裝的配置文件<br>

在你需要添加僞靜態的虛擬機中的server塊中引入.htaccess文件

include /usr/www/.htaccess
 #請把這個改成你.htaccess文件的位置

保存、退出重啓nginx

/usr/local/etc/rc.d/nginx restart

刷新看看,如果能正常器從證明你的rewrite rule的語法是正確

nginx的rewrite規則您可以直接放在主機配置中也可以放在獨立的文件用includeinru,存爲獨立的文件時,保存到一個新的文件(文件名可以任意取,不過建議還是用.ht(注意有個“點”)開頭的文件名,因爲這個服務器裏面默認過濾了外部對.ht開頭的文件訪問:

location ~ /.ht {
  deny all;
}

Win 使用的最新PhpStudy(8.1.0.1)的Nginx 引入htaccess文件,啓動失敗即時該問題造成的,如果不需要htaccess註釋即可,如圖、
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章