nginx上如何支持.htaccess僞靜態轉向

咱們知道在apache上有一個經常使用的功能.htaccess轉向,只要apache編譯的時候指明支持rewrite模塊就能夠了。 可是換到nginx上方法會有一點不同,網上不少人說把.htaccess轉向規則寫到nginx的配置文件裏面,這個辦法是官方提供的方法之 一,確定是可行的。可是這個方法有一個缺陷:不方便,下次你要更改一個僞靜態轉向規則的時候還得去nginx的配置文件或者nginx的虛擬網站的配置文 件裏面去改,相比apache直接在目錄下放置.htaccess文件,nginx的這個辦法顯然很原始。 不過沒關係,實際上是有辦法的,在nginx的配置文件中include .htacces文件就能夠實現相同的功能了。 舉個例子,我如今要把 www.blogguy.cn的.htaccess遷移到nginx上,能夠須要如下幾個步驟: 第一步:修改.htaccess文件,由於apache的rewrite轉向規則跟nginx的轉向規則仍是有一些不同的,典型的不同有nginx的根目錄須要寫在每行轉向的地址前,每行規則必須以分號(;)結束,301或者404等跳轉使用不一樣的格式。 個人apache上htaccess轉換到nginx上大體以下 RewriteEngine On RewriteBase / RewriteRule ^show-([0-9]+)-([0-9]+).html$ index.php?action=show&id=$1&page=$2 RewriteRule ^category-([0-9]+)-([0-9]+).html$ index.php?action=index&cid=$1&page=$2 RewriteRule ^archives-([0-9]+)-([0-9]+).html$ index.php?action=index&setdate=$1&page=$2 RewriteRule ^(archives|search|reg|login|index|links).html$ index.php?action=$1 RewriteRule ^(comments|tagslist|trackbacks|index)-([0-9]+).html$ index.php?action=$1&page=$2 rewriteCond %{http_host} ^blogguy.cn [NC] rewriteRule ^(.*)$ http://www.blogguy.cn/$1 [R=301,L] ErrorDocument 404 http://www.blogguy.cn/ 轉換成nginx的規則 rewrite ^/show-([0-9]+)-([0-9]+).html$ /index.php?action=show&id=$1&page=$2; rewrite ^/category-([0-9]+)-([0-9]+).html$ /index.php?action=index&cid=$1&page=$2; rewrite ^/archives-([0-9]+)-([0-9]+).html$ /index.php?action=index&setdate=$1&page=$2; rewrite ^/(archives|search|reg|login|index|links).html$ /index.php?action=$1; rewrite ^/(comments|tagslist|trackbacks|index)-([0-9]+).html$ /index.php?action=$1&page=$2; if ($host != 'www.blogguy.cn' ) { rewrite ^/(.*)$ http://www.blogguy.cn/$1 permanent; } error_page  404 http://www.blogguy.cn/; 第二步:修改nginx的配置文件,增長include該.htaccess文件 vi /etc/nginx/sites-available/www.blogguy.cn 增長一行:include /var/www/www.blogguycn/.htaccess 修改成你相應的地址。 第四步:測試並重啓 /etc/init.d/nginx -configtest 沒有問題的話重啓一下:/etc/init.d/nginx  restart 看看效果吧,是否是已經能夠了呢?
相關文章
相關標籤/搜索