我一直在努力与NGINXconfiguration。 我已经build立了一个支持search引擎友好(SEF)URL的configuration的开发环境(本地笔记本电脑),但是相同的configuration在我的testing服务器上似乎不起作用。
本地configuration:
server { server_name example; root /home/arciitek/git/example/public; client_max_body_size 500M; location /collection/ { try_files $uri $uri/ /collection/index.php$args; index index.php; } location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/arciitek/git/example/public/$fastcgi_script_name; } }
这工作正常。 现在在testing环境中看起来像这样:
server { server_name dev.example.com; access_log /srv/www/dev.example.com/access.log; error_log /srv/www/dev.example.com/error.log debug; root /srv/www/dev.example.com/public; location /collection/ { try_files $uri $uri/ /collection/index.php$args; index index.php; } location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/www/dev.example.com/public/$fastcgi_script_name; }
在我的开发环境中,一切都很好。 但是在我的testing环境中,当我在浏览器中调用url时,添加了漂亮项:collection / [brand] / [product]。 我得到: No input file specified错误。 请注意,如果我打电话给以收集/一切工作正常的url。
任何人都可以帮助我吗? 如果需要更多的信息,请让我知道..
应该不需要在PHP位置块中单独指定SCRIPT_FILENAME。 它已经在/etc/nginx/fastcgi_params文件中定义了。
所以,删除fastcgi_param SCRIPT_FILENAME行。
另外,对于PHP脚本的安全性,我会添加:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
到PHP的位置块。
否则,你确定你有/collection/index.php吗?
编辑:
正如@AlexeyTen在下面指出的那样,将其replace为:
try_files $uri $uri/ /collection/index.php$args;
有:
try_files $uri $uri/ /collection/index.php?$args;
我已经知道了。 我的符号链接有问题…感谢您的帮助。 对于遇到类似问题的用户,请确保/etc/nginx/sites-enabled/ simbolic链接指向/etc/nginx/sites-available/