Home >Backend Development >PHP Tutorial >404 error occurs in Nginx+CI

404 error occurs in Nginx+CI

WBOY
WBOYOriginal
2016-07-29 09:00:45950browse

I just learned the CI framework recently and made a simple project. The environment of the local server was adjusted, but when deployed to the remote server:

http://example.com/(index.php)/ can be accessed (For the configured default controller-class)

http://example.com/(index.php)/[controller-class]/[controller-method] cannot be accessed (prompt 404Error!)

Finally Baidu reason:

For URLs like /index.php/abc, Apache and Lighttpd will interpret it as "index.php?abc", while nginx will think that the request is for a directory with the name "index.php" The contents of the abc file . Therefore, CI cannot run under nginx without rewrite configured, but it works normally under Apache and Lighttpd.

Solution (emphasis in bold, emphasis in red):

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

Reference: http://www.2cto.com/os/201301/185926.html [404 error occurred in Nginx+CI Question】

The above introduces the 404 error in Nginx+CI, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn