最近使用thinkPHP框架進行開發的時候遇到一個問題,把項目部署到Linux上用nginx當服務器的狀況下,URL重定向出現問題,一樣的URL後綴,在本地環境能夠正常訪問,在服務器上就出現了404 ,可是使用TP的全路徑URL是能夠訪問的。後來通過查看發現是因爲本地環境和服務器上使用的服務載體不一樣致使的,本地環境使用的是Apache,服務器上使用的是nginx。通過查看TP的官方文檔,解決了問題:
Apache的URL重寫:php
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
nginx的重寫,須要在nginx的配置信息中添加:html
location / { // …..省略部分代碼 if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } }
而後要把項目的URL_MODEL改爲2:nginx
'URL_MODEL' => 2, URL訪問模式,可選參數0、一、二、3,表明如下四種模式: 0
(普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默認爲PATHINFO 模式
參考文檔:TP官方文檔thinkphp