以前我在我的CodeIgniter网站上使用运行Apache的linode VPS.今天我安装了Nginx,我的网站登陆页面即将推出,但是使用htaccess重写URL的其他页面也没有到来.
这是我的htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$/index.PHP/$1
我的htaccess的Nginx是什么?我的codeigniter配置和应用程序中还需要进行任何更改吗?
对于codeigniter配置中的URI协议,我正在使用,
$config['uri_protocol'] = 'PATH_INFO';
这会用Nginx吗??
最佳答案
由于没有等效的.htaccess文件(即没有目录级配置文件),因此需要更新主配置并重新加载Nginx以使任何更改生效.
上面的Apache配置基本上是“如果提供的路径不是现有文件或目录,则重定向到index.PHP,附加路径”.
在Nginx中,您将使用try_files指令来完成同样的事情:
location / {
try_files $uri $uri/ @ci_index;
}
location @ci_index{
rewrite ^(.*) /index.PHP?$1 last;
}
与Apache不同 – 如果Nginx配置中的语句为best avoided.
在某些设置中,您可以避免使用命名索引并重写,只需使用/index.PHP作为try_files的第3条路径(并且codeigniter应该从$_SERVER [$config [‘uri_protocol’]]获取路径.
至于PATH_INFO的使用 – 检查你的fastcgi_params文件(你希望它包含在你的PHP位置块中)并查看:
fastcgi_param PATH_INFO $fastcgi_path_info;
您也可以使用$config [‘uri_protocol’] =“REQUEST_URI”
对于您选择的任何选项,请检查print_r($_ SERVER)的输出以验证已设置的服务器变量以及它们已设置的内容(它们应与您在PHP位置块和fastcgi_params文件中指定的任何内容匹配) .