3

I'm trying to setup Codeigniter in a subdirectory of my domain. Currently I only get an 404 from Codeigniter on the index page. As soon as a want to go to example.com/api/welcome/index I get a 404 from nginx.

My nginx.conf:

location /api/ { alias /var/www/api/; try_files $uri $uri/ /api/index.php =404; location ~ \.php$ { try_files $uri /index.php =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_pass backend; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } 

and Codeigniter.conf:

$config['base_url'] = 'https:/example.com/api/'; $config['uri_protocol'] = 'REQUEST_URI'; $config['index_page'] = ''; 
2
  • The URL's you are putting in are not within the path of the location in the nginx.conf Commented May 30, 2015 at 16:44
  • I don't understand, what do you mean? Commented May 31, 2015 at 18:27

2 Answers 2

7

Got it working, the solution was to use $request_filename; instead of $document_root$fastcgi_script_name;

location /api/ { alias /var/www/api/; try_files $uri $uri/ /api/index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_pass backend; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; } } 
1

This has worked for me (nginx 1.18)

location ^~ /api { root /var/www/api; index index.php; try_files $uri $uri/ /api/index.php; location ~ \.php$ { try_files $uri /index.php =404; fastcgi_pass unix:/run/php/php7.1-fpm.sock; fastcgi_index index.php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 600; include fastcgi_params; } } 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.