一 前言
寶塔面板無論是對於linux系統還是windows系統,都提供了一鍵式的部署方案,操作簡單,不需要復雜的編程基本功,小白可以完成專業復雜的后端部署。 對於寶塔提供的thinkphp5框架而言,更是大大提高開發效率。今天,針對瀏覽器訪問地址中經常用到的url的pathinfo設置,進行分析總結。
二 pathinfo的概念
pathinfo是thinkphp框架為了url的簡化和直觀,設定的一種url形式。
今天以最簡單的控制品來說明。
舉個例如子

http://tp5.com/index/index/index2
域名為http://tp.com 訪問模塊為index 控制器為index 方法為index2
tp5中的方法如下:

index2方法可以帶參數,那么加一個參數看下效果

http://tp5.com/index/index/index2/a/我要給變量a傳一個參數
看到這里,tp5的url傳參是直接在方法名后/變量/變量值
這就是pathinfo!!!
那么,拋開tp5的pathinfo,tp3與傳統兼容模式,對是復雜的url傳參,非常不友好,也不利於seo.
今天要說的重點不是tp5的操作,而是寶塔面板在部署時,遇到的path設置問題。
三 ngix服務器pathinfo
寶塔服務器自帶的一鍵部署tp5的pathinfo正常,ngix版本為1.8.
但是如果從tp5官網下載的框架拷貝到寶塔網站中,path失效,經對比發現問題所在,點開網站設置,修改如下即可:


把網站偽靜態,寫入如下規則即可,
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
意為隱匿index.php文件將?s=這種形式變量傳參形式重定向到index.php.
四 apach服務器的pathinfo
寶塔自帶apach版本為2.4, 在tp5框架中,專門有一個文件是寫給apach讀取的,叫.htaccess文件 , 目錄在public文件夾下


<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
打開.htaccess.,如上修改,打開重定向即可。注意隱藏index.php時,有時apach默認少了?號,加上?號,pathinfo一切正常。
五 本機測試
寶塔所有建站方式為域名+端口。如果想在window系統本地編輯測試,在購買域名之后,需要將域名綁定到本機。打開如下目錄下的hosts文件


127.0.0.1 tp.com
表示當本機訪問tp.com域名時,訪問本機
五 總結
關於pathinfo,網上和論壇里,人者見仁,智者見智。實際工作中,用寶塔面板來配置服務器和網站,操作相對簡單,易於理解。總結起來其實就兩點,分別修改網站下的配置即可。
ngix 修改偽靜態
apach 修改.htaccess文件
