先說本身的狀況,目前富喬使用的是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時,看正文下面的評論