您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關 Nginx下怎么支持ThinkPHP的Pathinfo和URl Rewrite模式,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
1、ThinkPHP給出了ThinkPHP的官方解決方案,如下:
打開Nginx的配置文件 /etc/nginx/nginx.cof 一般是在這個路徑,根據你的安裝路徑可能有所變化。如果你配置了vhost,而且只需要你這一個vhost支持pathinfo的話,可以直接打開你的vhost的配置文件。找到類似如下代碼(不同版本的nginx可能稍有不同,但是相差不會很遠):
location ~ .php { #原有代碼 #定義變量 $path_info ,用于存放pathinfo信息 set $path_info ""; #定義變量 $real_script_name,用于存放真實地址 set $real_script_name $fastcgi_script_name; #如果地址與引號內的正則表達式匹配 if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { #將文件地址賦值給變量 $real_script_name set $real_script_name $1; #將文件地址后的參數賦值給變量 $path_info set $path_info $2; } #配置fastcgi的一些參數 fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; }
這樣,nginx服務器就可以支持pathinfo了。但是如果要支持ThinkPHP的URL_MODE設置為2的模式,還需要配置rewrite規則。找到access_log語句,在其上方加上以下語句:
#如果請求既不是一個文件,也不是一個目錄,則執行一下重寫規則 if (!-e $request_filename) { #地址作為將參數rewrite到index.php上。 rewrite ^(.*)$ /index.php?s=$1 last; #若是子目錄則使用下面這句,將subdir改成目錄名稱即可。 #rewrite ^/subdir/(.*)$ /subdir/index.php/$1; }
注:以上代碼已經測試了,我自己可以用,放在vhost網站配置文件即可。2016.09
看完上述內容,你們對 Nginx下怎么支持ThinkPHP的Pathinfo和URl Rewrite模式有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。