我正在尝试 nginx 并将我现有的 apache 配置移植到 nginx。我已经成功地重新路由了codeigniter url,但是我遇到了一个名称与站点根目录中的目录一致的特定控制器的问题。
我设法使我的 codeigniter url 像在 Apache 中一样工作,除了我有一个特定的 url 说它http://localhost/hello
与hello
站点根目录中的目录一致。Apache 对此没有任何问题。但是 nginx 路由到这个目录而不是控制器。
我的重路由结构如下
http://host_name/incoming_url => http://host_name/index.php/incoming_url
所有的 codeigniter 文件都在站点根目录中。
我的 nginx 配置(相关部分)
server {
listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /path/to/site/root;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
index index.php index.html index.htm;
try_files $uri $uri/ /index.php/$request_uri;
#apache rewrite rule conversion
if (!-e $request_filename){
rewrite ^(.*)/?$ /index.php?/$1 last;
}
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location ~ \.php.*$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
我是 nginx 的新手,我需要帮助来找出这个目录与控制器名称的冲突。我从网络上的各种来源中找到了这个配置,非常感谢任何更好的方式来编写我的配置。