協助用戶將apache下的一個網站遷移到nginx環境中,結果發現用戶用的ThinkPHP框架做的開發,默認用的pathinfo。
這是一個很頭疼的問題,因為nginx不支持pathinfo,貿然一并打開也擔心不安全。
于是查詢資料后整理如下:
找到applications/Conf/的配置文件 config.php
return array(
‘URL_MODEL’=>2,? //關于URL更多說明請參考Tinkphp/Common/convention.php
);
復制代碼
配置 Nginx.conf
在你的虛擬主機下添加
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php/$1 last;
}
}
復制代碼
如果你的項目入口文件在一個子目錄內則
location /目錄/ {
if (!-e $request_filename){
rewrite ^/目錄/(.*)$ /目錄/index.php/$1 last;
}
}
點評:
測試成功,注意Tinkphp/Common/convention.php
和網站下的applications/Conf/config.php
兩個文件 都要修改。
主要就是改成模式2,rewrite方式就可以了。