我通常使用apache,并试图给NGINX。
我已经安装在我的Ubuntu开发机器上,并有几个不同的框架和网站设置和开发(codeigniter,symfony,laravel等)。
我得到的问题是,只有以.php
结尾的path工作。 如果我尝试index.php/welcome/index
它只是404s而不是加载index.php。
我已经尝试将cgi.fix_pathinfo设置为1和0。
这是我目前的(很多尝试)网站configuration。
server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 root /my/path; index index.php index.html; # Make site accessible from http://localhost/ server_name localhost; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root /usr/share/nginx/www; #} location ~ \.php$ { try_files $uri =404; # Fix for server variables that behave differently under nginx/php-fpm than typically expected fastcgi_split_path_info ^(.+\.php)(/.+)$; # Include the standard fastcgi_params file included with nginx include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_index index.php; # Override the SCRIPT_FILENAME variable set by fastcgi_params fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Pass to upstream PHP-FPM; This must match whatever you name your upstream connection fastcgi_pass unix:/var/run/php5-fpm.sock; } location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
我宁愿使用下面的nginx配置结构。 它更干净:
location / { try_files $uri $uri/ @phpsite; } location @phpsite { include fastcgi_params; ... other fast_cgi directives }
在流行的silex项目中可以找到更复杂的设置: http ://silex.sensiolabs.org/doc/web_servers.html#nginx。
我在原配置文件中看到2个问题:
location ~ \.php$ { try_files $uri =404; ... }
我认为你所缺少的是一个规则
location / { try_files $uri $uri/ /index.php?$args; }
如果路径不存在,将尝试调用index.php url。
或者,也许,如果你知道尝试别的东西是没有意义的,只是
location / { try_files /index.php?$args; }
要么
location ~ /index.php { try_files /index.php?$args; }
这适用于我…
location ~ ^(.*?\.php)($|/.+) { try_files $1 =404; ... fastcgi conf... }