nginx通過rewrite方式處理路由

錚亮不鏽發表於2016-10-27

首先需要在nginx.conf中增加一行,具體如圖1所示



include /home/www/.htaccess;這一行,就說明你要讓該檔案中的rewrite配置生效


然後我們編輯.htaccess

具體程式碼

if (!-e $request_filename){
        rewrite ^/(.*)$ /webroot/index.php?_ca_=$1 last;
}



這幾句話的意思就是讓所有找不到的檔案都作為url引數,傳遞給index.php,這個是mvc框架程式的唯一入口

然後要記得重新載入nginx配置檔案,具體命令 /etc/init.d/nginx reload

有人說可以直接使用service nginx restart這樣的命令來讓配置檔案生效,這樣是不好的的,因為restart實際上包含了停止nginx服務以及開啟服務兩個步驟,

會導致使用者訪問網站時沒有響應,而reload命令則沒有這種問題。



然後我們寫程式可以測試一下

index.php檔案內容如下:

echo "arrive here,111<br/>";
var_dump($_GET);
echo "<br/>";
phpinfo();

最後我們訪問一下不存在的檔案 http://192.168.1.111/a.php

會發現如下結果,就說明配置成功了

arrive here,111
array(1) { ["url"]=> string(5) "a.php"}



PHP Version 5.6.26

System Linux debian1 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u1 x86_64
Build Date Oct 9 2016 22:59:11


路由控制這是mvc框架的核心功能,我們可以用這種方式來保證一個入口

有人用的web伺服器是apache,可以使用

線上Apache .htaccess檔案轉Nginx配置檔案 - aTool線上工具

網址是:http://www.atool.org/htaccess2nginx.php


這樣還是很方便的。


相關文章