最近使用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