Heim >Backend-Entwicklung >PHP-Tutorial >Nginx+CI出现404异常

Nginx+CI出现404异常

WBOY
WBOYOriginal
2016-06-13 12:28:421038Durchsuche

Nginx+CI出现404错误

最近刚学ci框架,做了个简单的项目,在本地搭服务器的环境都调通了,但是部署到远程服务器时:

 

http://example.com/(index.php)/ 可以访问(为配置的默认controller-class)

http://example.com/(index.php)/[controller-class]/[controller-method] 不可以访问(提示404错误!)

 

最后百度原因:

对于/index.php/abc这种url,Apache和Lighttpd会按”index.php?abc”来解释,而nginx会认为是请求名字是“index.php”的目录下的abc文件的内容。所以CI在nginx下不配置rewrite是无法运行的,而在Apache和Lighttpd则正常。

 

解决方案(要点加,重点标):

<span style="color: #008080;"> 1</span> <span style="color: #000000;">  server {</span><span style="color: #008080;"> 2</span>         listen 80<span style="color: #000000;">;</span><span style="color: #008080;"> 3</span>         server_name <strong>example.com</strong><span style="color: #000000;">;</span><span style="color: #008080;"> 4</span>         root <strong>/data/wwwroot/example/</strong><span style="color: #008080;"> 5</span>         index index.php index.html index.<span style="color: #000000;">htm;</span><span style="color: #008080;"> 6</span> <span style="color: #008080;"> 7</span>         location ~* \.(css|js|swf|htm|jpg|png|gif|json|atlas)?<span style="color: #000000;">$ {</span><span style="color: #008080;"> 8</span> <span style="color: #000000;">            expires 1d;</span><span style="color: #008080;"> 9</span>             add_header Pragma <span style="color: #0000ff;">public</span><span style="color: #000000;">;</span><span style="color: #008080;">10</span>             add_header Cache-Control "public"<span style="color: #000000;">;</span><span style="color: #008080;">11</span> <span style="color: #000000;">        }</span><span style="color: #008080;">12</span>         <span style="color: #008080;">13</span>         location /<span style="color: #ff0000;"><strong>controller-class</strong></span>/<span style="color: #000000;"> {</span><span style="color: #008080;">14</span>             <span style="color: #0000ff;">if</span> (!-e <span style="color: #800080;">$request_filename</span><span style="color: #000000;">) {</span><span style="color: #008080;">15</span>                 rewrite ^/<span style="color: #ff0000;"><strong>controller-class</strong></span>/(.*)$  /<strong><span style="color: #ff0000;">controller-class</span></strong>/index.php?q=<span style="color: #800080;">$uri</span>&<span style="color: #800080;">$args</span><span style="color: #000000;">;</span><span style="color: #008080;">16</span> <span style="color: #000000;">            }</span><span style="color: #008080;">17</span> <span style="color: #000000;">        }</span><span style="color: #008080;">18</span>  <span style="color: #008080;">19</span>         location ~ \.<span style="color: #000000;">php$ {</span><span style="color: #008080;">20</span>             fastcgi_pass   127.0.0.1:9000<span style="color: #000000;">;</span><span style="color: #008080;">21</span>             fastcgi_index  index.<span style="color: #000000;">php;</span><span style="color: #008080;">22</span>             fastcgi_param  SCRIPT_FILENAME  <span style="color: #800080;">$document_root$fastcgi_script_name</span><span style="color: #000000;">;</span><span style="color: #008080;">23</span>                         fastcgi_param  PHP_VALUE        open_basedir=<span style="color: #800080;">$document_root</span>:/tmp/:/proc/<span style="color: #000000;">;</span><span style="color: #008080;">24</span>             <span style="color: #0000ff;">include</span><span style="color: #000000;">        fastcgi_params;</span><span style="color: #008080;">25</span> <span style="color: #000000;">        }</span><span style="color: #008080;">26</span> <span style="color: #008080;">27</span>     }

 

参考资料:http://www.2cto.com/os/201301/185926.html【Nginx+CI出现404错误问题】

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn