解決阿里雲 裝LNMP,ThinkPHP代碼出現只能訪問主頁,其餘跳轉404

pathinfo是什麼:
php

path_info不是nginx的功能,它是php的功能。php有兩個pathinfo,一個是環境變量$_SERVER['PATH_INFO'] ,另外一個是函數path_info();html

path_info()的功能是能夠將輸入的url作判斷,並返回對url的解析,但nginx並非做用於它。linux

想要對他們兩個有更深刻了解能夠去這裏看看:nginx

http://www.2cto.com/os/201212/176543.html
vim

nginx能夠可設置的是$_SERVER['PATH_INFO']的值。服務器

$_SERVER['PATH_INFO']的做用是返回url的一部分,並用與重寫。函數


nginx的配置:阿里雲

進入阿里雲的控制檯,輸入命令 : cd usr/local/nginx/conf回車(這是我阿里雲的linux的nginx配置文件的路徑,不知作別人家的會不會不一樣,不一樣也不要緊,反正目標是nginx.conf文件),進入的conf文件夾,繼續輸入命令 vim nginx.conf回車url

打開了nginx.conf配置文件,按 i 鍵,找到http下的server下開始配置:unix

     location / {        
     if (!-e $request_filename) {
             rewrite  ^/(.*)$  /index.php/$1  last;
                     break;
             }
     }
      
     location ~ \.php {
         fastcgi_pass 127.0.0.1:9000;  //這裏不用擔憂你的服務器的ip是否和這個不同,不用懷疑,
         //這樣寫就好了
         fastcgi_index index.php;
         include fcgi.conf;
         set $script $fastcgi_script_name;
         if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
         //上行的if和「(」間要有空格,這是lunix的語法,否則會報錯
         //報位置變量
             set $script $1;  //注意這裏是1234的1不是字母l
             set $path_info $2;
         }
         fastcgi_param SCRIPT_FILENAME $document_root$script;
         fastcgi_param SCRIPT_NAME $script;
         fastcgi_param PATH_INFO $path_info;
     }


到這裏就完成配置,接下來就重啓一下nginx,我不曉得別的重啓方法,個人重啓方法是重啓amh我使用了amh面板的,另外說一句amh的重啓命令。先是cd回根目錄,找etc目錄,cd進去,而後輸入:init.d/amh-start回車。

還有另一種配置方法:

location ~ \.php {    #去掉$
     root          H:/PHPServer/WWW;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_split_path_info ^(.+\.php)(.*)$;     #增長這一句
     fastcgi_param PATH_INFO $fastcgi_path_info;    #增長這一句
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     include        fastcgi_params;
 }

接下來的步驟和上面同樣。

這兩種方法我都實踐過,都是能夠支持ThinkPHP的,可是第二種有點缺陷,我原先放在阿里雲的用原生PHP的寫的Web就訪問不了,而後我換了第二種配置,完美支持。

題外:

Apache是默認支持path_info, 而nginx不支持,對於剛接觸的人可能會由於以爲配置nginx的pathinfo會很麻煩而止步,裝回Apache。我想說請不要這麼作,由於比起Apache,nginx更加穩定更增強大,並且咱們由於麻煩就止步,這可不是進步的節奏。

這是一篇分析Apache和nginx的技術blog:http://www.cnblogs.com/huangye-dream/p/3550328.html

相關文章
相關標籤/搜索