《PHP實例:Nginx下ThinkPHP5的配置方法詳解》要點:
本文介紹了PHP實例:Nginx下ThinkPHP5的配置方法詳解,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關主題:thinkphp教程
PHP實戰(zhàn)本文主要給大家介紹了關于Nginx下ThinkPHP5的配置方法,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹:
PHP實戰(zhàn)url里public目錄的隱藏
PHP實戰(zhàn)出于安全的考慮,TP5的入口文件改成放在public下了,因為這樣的話能防止被惡意用戶訪問到“/thinkphp/”、“/vendor/”等等這些目錄下的文件.所以當你以之前的習慣將網(wǎng)站documentroot配置為項目根目錄的時候就會需要在url后面加上/public/來訪問.當然可能也會有童鞋把入口文件放回到根目錄下,然后還是以之前3.x版那樣的形式訪問了.
PHP實戰(zhàn)但是很顯然,這么做并不是那么的科學.
PHP實戰(zhàn)假設項目目錄為“/web/wwwroot/augsky.com”,那么我們在網(wǎng)站的nginx配置文件里面將root配置為:
PHP實戰(zhàn)
root /web/wwwroot/augsky.com/public;
PHP實戰(zhàn)但是一定要記得將open_basedir設置為上一級項目的根目錄下,不然應用會沒有權限調用除public目錄下的其他文件,網(wǎng)站會報500無法訪問.(open_basedir的配置默認在php.ini里面,但如果是多個虛擬機環(huán)境的話有可能會在各個網(wǎng)站的user.ini文件里,這個要根據(jù)自己的實際情況來.)具體配置如下:
PHP實戰(zhàn)
open_basedir=/web/wwwroot/augsky.com:/tmp/:/proc/
PHP實戰(zhàn)隱藏入口文件index.php:
PHP實戰(zhàn)
location /
{
try_files $uri $uri/ /index.php?s=$uri&$args;
#如果請求不是文件或目錄,則將uri交給index.php處理,同時保留參數(shù)
}
PHP實戰(zhàn)說一下try_files:
PHP實戰(zhàn)
try_files
語法: try_files file1 [file2 ... filen] uri
OR
try_files file1 [file2 ... filen] =code
默認值: 無
作用域: server location
PHP實戰(zhàn)try_files支持多個參數(shù),每個參數(shù)代表一個文件,系統(tǒng)將按順序檢查這些文件是否存在,存在就直接執(zhí)行,斜線“/”結尾代表目錄,若都不存在,則會重定向到最后一個參數(shù)指向的文件或者返回指定的http狀態(tài)碼.
PHP實戰(zhàn)pathinfo配置
PHP實戰(zhàn)在配置文件里面增加這一段(如果你是lnmp一鍵包用戶,請略過這一段往下翻):
PHP實戰(zhàn)
location ~ [^/]\.php(/|$) {
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;
#將文件地址后的參數(shù)賦值給變量 $path_info
set $path_info $2;
}
#配置fastcgi的一些參數(shù)
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
include fastcgi_params;
}
PHP實戰(zhàn)上面需要說明的是fastcgi_pass的設置,這個得根據(jù)你實際的php版本和安裝目錄來設定.
PHP實戰(zhàn)好,做完這些之后,保存,重啟nginx和php就能生效了.如果你是lnmp一鍵包用戶的話不用上面這樣設置,往下面看:
PHP實戰(zhàn)lnmp一鍵包pathinfo的設置
PHP實戰(zhàn)其實lnmp一鍵包里面的pathinfo軍哥已經(jīng)都寫好了,我們只需要把include enable-php.conf;修改成include enable-php-pathinfo.conf;然后重啟lnmp就搞定了.
PHP實戰(zhàn)
#include enable-php.conf;或者,你直接注釋掉這一行,在下面添加新的一行
include enable-php-pathinfo.conf;
PHP實戰(zhàn)就是這樣簡單.下面順便附上在url里隱藏模塊的方法
PHP實戰(zhàn)url隱藏默認模塊index
PHP實戰(zhàn)很簡單,在入口文件里面定義常量BIND_MODULE為你使用的模塊就好了,以默認的index為例:
PHP實戰(zhàn)
define('BIND_MODULE', 'index');
PHP實戰(zhàn)這樣,在url里面不會在有模塊名這一級目錄了.要知道,層級少一些的url對SEO是有好處的.
PHP實戰(zhàn)下面是nginx里面location的匹配規(guī)則
PHP實戰(zhàn)Nginx location的匹配規(guī)則
PHP實戰(zhàn)location 匹配優(yōu)先級
PHP實戰(zhàn)總結
PHP實戰(zhàn)以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對維易PHP的支持
轉載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/396.html