這篇文章主要介紹了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則正常。
解決方案(要點加粗,重點標紅):
server { listen ; server_name example.com; root /data/wwwroot/example/ index index.php index.html index.htm; location ~* \.(css|js|swf|htm|jpg|png|gif|json|atlas)?$ { expires d; add_header Pragma public; add_header Cache-Control "public"; } location /controller-class/ { if (!-e $request_filename) { rewrite ^/controller-class/(.*)$ /controller-class/index.php?q=$uri&$args; } } location ~ \.php$ { fastcgi_pass ...:; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/; include fastcgi_params; } }
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
以上是如何解決Nginx和CI框架出現404錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!