nginx 配置rewrite

先說本身的狀況,目前富喬使用的是lnmp一鍵包,解決步驟以下:php

1.打開/usr/local/nginx/conf/nginx.conf   文件,在server段中,access_log句子前加入如下代碼html

location /ck/cashier/ {
if (!-e $request_filename){
rewrite ^/ck/cashier/(.*)$ /ck/cashier/index.php?s=/$1 last;
}
}mysql

其中/ck/cashier/  爲二級目錄,可根據本身的項目目錄狀況隨意替換nginx

 

2.因爲看到nginx.conf中有一句這樣的話  include enable-php.conf;  所以打開該文件查看sql

修改該文件爲thinkphp

location ~ [^/]\.php(/|$)
{
# try_files $uri =404;   這一句百度得知,其功能是替代url rewrite功能,所以須要註釋,加入  include pathinfo.conf,才能使得第一步中的重寫規則生效php框架

fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}

框架

3.lnmp  restart  重啓生效url

以上操做針對富喬生產環境配置有效,若是項目使用thinkphp框架,要記得將配置文件中的'URL_MODEL' =>'2'修改spa

 

若是採用nginx+php+mysql單獨安裝流程,可參考

http://www.nginx.cn/426.html  ,

按照圖中教程,進一步說明:

首先,不須要將php.ini中的cgi.fix_pathinfo設置爲1,富喬的生產環境中就改值爲0

--------------------------------------------------------------------------------------------------------------------------------

其次,教程中說的如下兩步,兩步配置都須要進行操做,並非二選一操做。也便是說,在配置url重寫規則前,要配置nginx,使其支持pathinfo,而後url重寫規則

         才能生效。總之一句話,nginx配置rewrite規則分兩步:a.設置nginx支持pathinfo;b.編寫url重寫規則(),教程中第二步作的就是a;第一步作的就是b。

 

          (教程中的兩步)1.能夠經過rewrite方式代替php中的PATH_INFO   2.nginx配置文件中設置PATH_INFO值

         至於在富喬的生產環境當中,第二步並無在nginx.conf中進行配置,是由於前面有一句include enable-php.conf,在該文件當中,會發現

         include pathinfo.conf這樣的語句,而打開pathinfo.conf文件,發現其中操做,與教程步驟2的配置類似。

--------------------------------------------------------------------------------------------------------------------------------

最後,因爲可能會常常使用到lnmp一鍵包,這些安裝包特殊的地方是fastcgi_pass不是 127.0.0.1:9000,而是unix:/dev/shm/php-cgi.sock。所以,在設置       nginx 支持pathinfo的時候,需寫成(如下代碼主要注意fastcgi_pass的值,其餘部分可參考上述第二步驟中的配置也可)

         location ~ \.php {
         #fastcgi_pass 127.0.0.1:9000; // pass 不是這個
         fastcgi_pass unix:/dev/shm/php-cgi.sock; // 而是這個
         fastcgi_index index.php;
         include fastcgi.conf;
         set $real_script_name $fastcgi_script_name;
         if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
         set $real_script_name $1;
         set $path_info $2;
         }
         fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
         fastcgi_param SCRIPT_NAME $real_script_name;
         fastcgi_param PATH_INFO $path_info;
         }

   以上參考http://www.thinkphp.cn/topic/3138.html   ,正文中是對nginx+php單獨安裝的狀況下,進行的配置說明,使用lnmp時,看正文下面的評論

相關文章
相關標籤/搜索